回答:
パスカルの答えに触発
#!/usr/bin/env bash
(set -x; brew update;)
(set -x; brew cleanup;)
(set -x; brew cask cleanup;)
red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
casks=( $(brew cask list) )
for cask in ${casks[@]}
do
version=$(brew cask info $cask | sed -n "s/$cask:\ \(.*\)/\1/p")
installed=$(find "/usr/local/Caskroom/$cask" -type d -maxdepth 1 -maxdepth 1 -name "$version")
if [[ -z $installed ]]; then
echo "${red}${cask}${reset} requires ${red}update${reset}."
(set -x; brew cask uninstall $cask --force;)
(set -x; brew cask install $cask --force;)
else
echo "${red}${cask}${reset} is ${green}up-to-date${reset}."
fi
done
何をする
brew cask info
最新バージョンを確認してくださいソース: https : //gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b
せっかちな人のためのライナー:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
として保存し /usr/local/bin/cask-upgrade
、cask-upgrade
後でローカルで実行できるようにします
brew cask uninstall --force
古いバージョンをそこに残したくない場合は、新しいバージョンをインストールする前に実行する必要があります。
これは、キャスクをアップグレードするための最善のソリューションだと思います。
ソース: https : //github.com/buo/homebrew-cask-upgrade
インストールと使用
brew tap buo/cask-upgrade
brew update
brew cu
(オプション)最新としてマークされたものを含む古いアプリを強制的にアップグレードします。
brew cu --all
他の回答の引用にあるように、現在、更新されたすべての樽をアップグレードする方法はありません。
答えの2番目の部分は間違ってbrew upgrade --all
いますが、キャスクをアップグレードできません。
すべてのキャスクをアップグレードする唯一の方法は、インストールされているキャスクのリストを取得し、変更されていないキャスクを含めて強制的に再インストールすることです!
では、魚、あなたはこのようにそれを行うことができます:
for app in (brew cask list)
brew cask install --force $app
end
編集:
Ataisは、機能するスクリプトを作成しました。パッケージをアップグレードするBashスクリプトです。
これよりも彼の答えを支持してください。
brew cask update
。ここでは、日付のうち、現在のパッケージのみアップグレードするために、以前の応答に続く、その後apple.stackexchange.com/a/231020/49601
homebrew-caskリポジトリはHomebrew Tapであるため、通常のHomebrewコマンドを発行するたびに最新のCasksをプルダウンします
brew update
。現在、homebrew-caskは、アプリケーションが更新されたかどうかを常に検出できるわけではありません。コマンドを使用して強制的に更新できbrew cask install --force
ます。この改善に取り組んでいます。
抽出式とキャスクの両方をアップグレードするには、次のもので十分です。
brew upgrade --all
brew upgrade --all
と同等brew upgrade
です。キャスクはそのコマンドではアップグレードされません。
これは、homebrewの完全なアップグレードパスを実行するために実行する.bash_profileにあるものです。バージョンが常に「最新」であるか、アップグレードする必要がないため、更新ごとに巨大なダウンロードが繰り返し取得されるのを防ぐために、いくつかのアイテムを「固定」します。
boop() {
brew update && brew upgrade && brew cleanup \
&& cask-upgrade && cask-retire && brew cask cleanup \
&& brew doctor && brew cask doctor
}
__is_pinned() {
local pinned=";pixate-studio;sketchup;skype;"
[[ *";${1};"* != "${pinned}" ]] && return 0 || return 1
}
cask-upgrade() {
while read -r; do
reply=(${REPLY})
name="${reply[0]}"
vers="${reply[1]}"
if ! __is_pinned "${name}"; then
if [[ "${vers}" == "latest" ]]; then
brew cask install "${name}" --force
else
brew cask install "${name}" 2> >(grep -v "re-install")
fi
fi
done < <(brew cask list --versions)
}
cask-retire() {
room="/opt/homebrew-cask/Caskroom"
while read -r; do
reply=(${REPLY})
name="${reply[0]}"
vers="${reply[1]}"
if ! __is_pinned "${name}"; then
for inst in $(ls "${room}/${name}"); do
if [[ "${inst}" != "${vers}" ]]; then
echo "Removing ${name} version ${inst}"
rm -r "${room}/${name}/${inst}"
fi
done
fi
done < <(brew cask list --versions)
}
brew caskアプリをzshに再インストールするには:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
、ユーザー入力を必要とする多くのインストール(たとえば、-quartz)を持っている可能性のあるユーザーにはあまり適していません。また、再インストールする前にすべてのアプリケーションをアンインストールする必要はありません。理想的には、brew cask update
最初のようなアップデートも実行する必要があります。
これは本当に私をいらいらさせたので、このスクリプトを作成してすべてのBrewアプリを更新し、ユーザーが更新するCaskアプリを選択できるようにしました。アプリを考慮から除外することもできます。
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
Stack Overflowの対応する質問で@ eduncan911の回答をお勧めします。
要するに:
brew-cask.sh
はHomebrewのような出力をリストするだけbrew update
です。上記のリストには、インストールされているすべてのパッケージが✔
表示され、保留中の更新は緑色で示されます。brew-cask.sh
upgradeは、これらのパッケージのアップグレードを強制します。彼のリポジトリからインストールします:
$ curl -L https://raw.githubusercontent.com/eduncan911/dotfiles/master/bin/brew-cask.sh --create-dirs -o ~/bin/brew-cask.sh
$ chmod 755 ~/bin/brew-cask.sh
次に、次のように使用します。
$ brew-cask.sh
$ brew-cask.sh upgrade
私は自分でそのような台本を作りました。github https://github.com/pesh1983/brew_cask_upgradeをご覧ください。説明はかなり充実していますが、さらに質問がある場合は、お気軽にお問い合わせください。それは公平なアップグレードを行います:アンインストールとインストール。したがって、必要なクリーンアップは「brew」自体によって実行されます。
for app in $(brew cask list); do
cver="$(brew cask info "${app}" | head -n 1 | cut -d " " -f 2)"
ivers=$(ls -1 "/opt/homebrew-cask/Caskroom/${app}/.metadata/" | tr '\n' ' ' | sed -e 's/ $//')
aivers=(${ivers})
nvers=$(echo ${#aivers[@]})
echo "[*] Found ${app} in cask list. Latest available version is ${cver}. You have installed version(s): ${overs}"
if [[ ${nvers} -eq 1 ]]; then
echo "${ivers}" | grep -q "^${cver}$" && { echo "[*] Latest version already installed :) Skipping changes ..."
continue; }
fi
echo "[+] Fixing from ${ivers} to ${cver} ..."
brew cask uninstall "${app}" --force
brew cask install "${app}"
done