Réponses:
inspiré par Pascal répondre
#!/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
Ce qu'il fait
brew cask info
pour la dernière versionsource: https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b
un paquebot pour impatient:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
enregistrer sous /usr/local/bin/cask-upgrade
, vous pouvez donc l'exécuter localement comme cask-upgrade
plus tard
brew cask uninstall --force
avant d'installer la nouvelle version si vous ne voulez pas que l'ancienne version y reste.
À partir de décembre 2017, brew cask upgrade
c'est une chose.
Je pense que c'est de loin la meilleure solution pour améliorer les fûts.
source: https://github.com/buo/homebrew-cask-upgrade
Installation et utilisation
brew tap buo/cask-upgrade
brew update
brew cu
(Facultatif) Forcer la mise à niveau des applications obsolètes, y compris celles marquées comme la dernière:
brew cu --all
Comme l'indique la citation de l'autre réponse, il n'existe actuellement aucun moyen de mettre à niveau tous les fûts mis à jour.
La deuxième partie de la réponse est fausse, cependant: brew upgrade --all
ne peut pas mettre à niveau les fûts.
Le seul moyen de mettre à niveau tous les casks est d'obtenir une liste des casks installés et de les forcer à être réinstallés, y compris ceux qui n'ont pas changé!
Dans le poisson , vous pouvez le faire comme ceci:
for app in (brew cask list)
brew cask install --force $app
end
modifier:
Atais a créé un script qui fonctionne: Script Bash pour mettre à niveau des packages .
S'il vous plaît upvote sa réponse plutôt que celui-ci.
brew cask update
puis suivre la réponse précédente afin de ne mettre à jour que les packages actuellement obsolètes ici: apple.stackexchange.com/a/231020/49601
De la homebrew cask
documentation :
Comme le référentiel homebrew-cask est un Homebrew Tap, vous extrayez les derniers Casks à chaque fois que vous exécutez la commande Homebrew standard
brew update
. À l'heure actuelle, homebrew-cask ne peut pas toujours détecter si une application a été mise à jour. Vous pouvez forcer une mise à jour via la commandebrew cask install --force
. Nous travaillons à améliorer cela.
Ce qui suit devrait suffire à améliorer les préparations et les fûts.
brew upgrade --all
brew upgrade --all
est équivalent à brew upgrade
maintenant. Les fûts ne sont pas mis à niveau par cette commande.
Voici ce que j'ai dans mon fichier .bash_profile que je lance pour effectuer une passe de mise à niveau complète de homebrew. Je «bloque» quelques éléments pour éviter que des téléchargements gigantesques ne soient récupérés à chaque fois, car leurs versions sont toujours «récentes» ou ne devraient pas être mises à niveau.
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)
}
Pour réinstaller les applications de brassage dans zsh:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
installations nécessitant leur entrée (par exemple, quartz) . De plus, il n'est pas nécessaire de désinstaller chaque application avant de la réinstaller. Idéalement, vous devriez également lancer une mise à jour comme brew cask update
avant.
Cela m'a vraiment énervé. J'ai donc créé ce script pour mettre à jour toutes les applications Brew et permettre à l'utilisateur de choisir les applications Cask à mettre à jour. Vous pouvez également exclure les applications de la considération.
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
Je recommande la réponse de @ eduncan911 à la question de la contrepartie de Stack Overflow .
En bref:
brew-cask.sh
répertorie simplement une sortie similaire à celle de Homebrew brew update
. la liste ci-dessus montre tous les packages installés, avec un vert ✔
indiquant les mises à jour en attente.brew-cask.sh
upgrade forcera la mise à jour de ces paquets.Installer depuis son repo avec:
$ 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
Ensuite, utilisez-le comme ceci:
$ brew-cask.sh
$ brew-cask.sh upgrade
J'ai fait ce scénario par moi-même. Veuillez consulter le github https://github.com/pesh1983/brew_cask_upgrade . La description est assez bonne, mais si vous avez des questions supplémentaires, n'hésitez pas à me les demander. Il effectue une mise à niveau équitable: désinstallez et installez, ainsi tout nettoyage nécessaire sera effectué par «brasser» lui-même.
Ce serait probablement plus approprié comme commentaire, mais je n'ai pas assez de réputation pour en laisser un, alors ...
A la date de rédaction de ce document, il homebrew-cask
dispose de son propre système de mise à niveau. Les scripts et outils tiers ne sont donc plus nécessaires.
Pour lister les fûts obsolètes: brew cask outdated
Pour mettre à niveau tous les fûts obsolètes: 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