C'è un modo per aggiornare tutto brew cask
s? Qualcosa come brew cask upgrade
?
ispirato alla risposta Pascal
#!/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:\ \(.*\)//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
Che cosa fa
brew cask info
per la versione più recente fonte: link
un rivestimento per impaziente:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
salva come /usr/local/bin/cask-upgrade
, quindi puoi eseguirlo localmente come cask-upgrade
più tardi
Penso che questa sia di gran lunga la migliore soluzione per aggiornare le botti.
source: link
Installazione e amp; utilizzo
brew tap buo/cask-upgrade
brew update
brew cu
(Opzionale) Forza l'aggiornamento delle app obsolete, incluse quelle contrassegnate come ultime:
brew cu --all
Come dice la citazione nell'altra risposta, non esiste attualmente alcun modo per aggiornare tutte le botti aggiornate.
La seconda parte della risposta è sbagliata, tuttavia: brew upgrade --all
non può aggiornare le botti.
L'unico modo per aggiornare tutte le botti è quello di ottenere un elenco delle botti installate e forzarle a reinstallarle, incluse quelle che non sono state cambiate!
In pesce , puoi fare così:
for app in (brew cask list)
brew cask install --force $app
end
modifica:
Atais ha creato uno script che funziona: Script di Bash per aggiornare i pacchetti .
Per favore, invertire la sua risposta piuttosto che questa.
Dalla documentazione di homebrew cask
:
Since the homebrew-cask repository is a Homebrew Tap, you'll pull down the latest Casks every time you issue the regular Homebrew command
brew update
. Currently, homebrew-cask cannot always detect if an Application has been updated. You can force an update via the commandbrew cask install --force
. We are working on improving this.
Quanto segue dovrebbe essere sufficiente per aggiornare sia le preparazioni di fermentazione che le botti.
brew upgrade --all
Ecco cosa ho nel mio .bash_profile che eseguo per eseguire un passaggio di aggiornamento completo di homebrew. I "pin" un paio di elementi per mantenere download giganteschi da essere ripetutamente recuperati per ogni aggiornamento, perché le loro versioni sono sempre "più recenti" o non dovrebbero essere aggiornati.
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)
}
Per reinstallare le app di brew cask in zsh:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
Raccomando la risposta di @ eduncan911 in la domanda corrispondente su Stack Overflow .
In breve:
brew-cask.sh
elenca solo un risultato simile a brew update
di Homebrew.
la lista qui sopra mostra tutti i pacchetti installati, con una percentuale verde% co_de che indica eventuali aggiornamenti in sospeso. ✔
imporrà l'aggiornamento di tali pacchetti. Installa dal suo repository con:
$ 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
Quindi usalo in questo modo:
$ brew-cask.sh
$ brew-cask.sh upgrade
Ho realizzato un copione di questo tipo da solo. Per favore guarda il github link . Ha una descrizione abbastanza buona, ma se hai altre domande, sentiti libero di chiedermelo. Effettua un aggiornamento corretto: disinstallalo e installalo, quindi ogni operazione di pulizia necessaria verrà eseguita da "brew" stesso.
Probabilmente sarebbe più appropriato come commento, ma non ho abbastanza reputazione per lasciarne uno, quindi ...
Al momento della stesura di questo documento, homebrew-cask
ha il proprio sistema di aggiornamento, pertanto gli script e gli strumenti di terze parti non sono più necessari.
Per elencare le botti obsolete: brew cask outdated
Per aggiornare tutte le botti obsolete: 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
Leggi altre domande sui tag homebrew