Antworten:
inspiriert von Pascal Antwort
#!/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
Was es macht
brew cask info
für die neueste VersionQuelle: https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b
Ein Liner für Ungeduldige:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
Speichern unter /usr/local/bin/cask-upgrade
, damit Sie es cask-upgrade
später lokal ausführen können
brew cask uninstall --force
vor der Installation der neuen Version ausgeführt werden, wenn Sie nicht möchten, dass die alte Version dort bleibt.
Ich denke, dies ist bei weitem die beste Lösung, um die Fässer aufzurüsten.
Quelle: https://github.com/buo/homebrew-cask-upgrade
Installation & Nutzung
brew tap buo/cask-upgrade
brew update
brew cu
(Optional) Aktualisieren veralteter Apps erzwingen, einschließlich der als aktuell markierten:
brew cu --all
Wie das Zitat in der anderen Antwort besagt, gibt es derzeit keine Möglichkeit, alle aktualisierten Fässer zu aktualisieren.
Der zweite Teil der Antwort ist jedoch falsch: brew upgrade --all
Fässer können nicht aktualisiert werden.
Die einzige Möglichkeit, ein Upgrade für alle Fässer durchzuführen, besteht darin, eine Liste der installierten Fässer abzurufen und deren Neuinstallation zu erzwingen - einschließlich derjenigen, die sich nicht geändert haben!
Bei Fischen könnte man das so machen:
for app in (brew cask list)
brew cask install --force $app
end
bearbeiten:
Atais hat ein Skript erstellt, das funktioniert: Bash-Skript zum Aktualisieren von Paketen .
Bitte stimmen Sie seiner Antwort eher zu als dieser.
brew cask update
die vorherigen Schritte
Aus der homebrew cask
Dokumentation :
Da es sich bei dem Homebrew-Fass-Repository um einen Homebrew-Hahn handelt, ziehen Sie jedes Mal, wenn Sie den regulären Homebrew-Befehl ausgeben, die neuesten Fässer herunter
brew update
. Derzeit kann homebrew-cask nicht immer erkennen, ob eine Anwendung aktualisiert wurde. Sie können ein Update über den Befehl erzwingenbrew cask install --force
. Wir arbeiten daran, dies zu verbessern.
Das Folgende sollte ausreichen, um sowohl Brührezepturen als auch Fässer aufzurüsten.
brew upgrade --all
brew upgrade --all
ist gleichwertig mit brew upgrade
jetzt. Fässer werden durch diesen Befehl nicht aktualisiert.
Hier ist, was ich in meinem .bash_profile habe, damit ich ein vollständiges Upgrade von Homebrew durchführen kann. Ich habe ein paar Elemente "angeheftet", um zu verhindern, dass gigantische Downloads bei jedem Update wiederholt abgerufen werden, da ihre Versionen immer "aktuell" sind oder nicht aktualisiert werden sollten.
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)
}
So installieren Sie Brew Cask-Apps in zsh neu:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
Installationen haben, für die Benutzereingaben erforderlich sind (z . B. - quartz) . Außerdem muss nicht jede Anwendung deinstalliert werden, bevor sie erneut installiert wird. Idealerweise sollten Sie auch ein Update wie brew cask update
zuerst ausführen .
Das hat mich sehr geärgert, deshalb habe ich dieses Skript erstellt, um alle Brew-Apps zu aktualisieren und dem Benutzer zu ermöglichen, auszuwählen, welche Cask-Apps aktualisiert werden sollen. Sie können Apps auch von der Prüfung ausschließen.
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
Ich empfehle die Antwort von @ eduncan911 in der Gegenfrage zum Stack Overflow .
Zusamenfassend:
brew-cask.sh
listet nur eine Ausgabe ähnlich der von Homebrew auf brew update
. In der obigen Liste sind alle installierten Pakete aufgeführt. Ein grünes ✔
Symbol zeigt an, dass Aktualisierungen ausstehen.brew-cask.sh
upgrade erzwingt das Upgrade dieser Pakete.Installieren Sie von seinem Repo mit:
$ 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
Dann benutze es so:
$ brew-cask.sh
$ brew-cask.sh upgrade
Ich habe ein solches Skript selbst gemacht. Bitte schauen Sie sich den Github https://github.com/pesh1983/brew_cask_upgrade an . Es hat eine ziemlich gute Beschreibung, aber wenn Sie weitere Fragen haben, können Sie mich gerne fragen. Es ist ein faires Upgrade: Deinstallieren und installieren, sodass alle erforderlichen Bereinigungen von "brew" selbst durchgeführt werden.
Dies wäre wahrscheinlich als Kommentar angemessener, aber ich habe nicht genug Ruf, um einen zu hinterlassen, also ...
Ab diesem Zeitpunkt homebrew-cask
ist ein eigenes Upgrade-System vorhanden, sodass keine Skripte und Tools von Drittanbietern mehr erforderlich sind.
So listen Sie veraltete Fässer auf: brew cask outdated
So aktualisieren Sie alle veralteten Fässer: brew cask upgrade
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