Respuestas:
inspirado en la respuesta de 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:\ \(.*\)/\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
Que hace
brew cask info
versión más nuevafuente: https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b
un forro para impacientes:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
guardar como /usr/local/bin/cask-upgrade
, para que pueda ejecutarlo localmente más cask-upgrade
tarde
brew cask uninstall --force
antes de instalar la nueva versión si no desea que la versión anterior permanezca allí.
A partir de diciembre de 2017, brew cask upgrade
es una cosa.
Creo que esta es, con mucho, la mejor solución para actualizar los barriles.
fuente: https://github.com/buo/homebrew-cask-upgrade
Instalación y uso
brew tap buo/cask-upgrade
brew update
brew cu
(Opcional) Fuerce la actualización de aplicaciones obsoletas, incluidas las marcadas como más recientes:
brew cu --all
Como dice la cita en la otra respuesta, actualmente no hay forma de actualizar todos los barriles actualizados.
Sin embargo, la segunda parte de la respuesta es incorrecta: brew upgrade --all
no se pueden actualizar los barriles.
La única forma de actualizar todos los barriles es obtener una lista de los barriles instalados y obligarlos a volver a instalarlos, ¡incluidos los que no han cambiado!
En pescado , podrías hacer eso así:
for app in (brew cask list)
brew cask install --force $app
end
editar:
Atais creó un script que funciona: Bash script para actualizar paquetes .
Vota por favor su respuesta en lugar de esta.
brew cask update
y seguir la respuesta anterior para actualizar solo los paquetes que actualmente están desactualizados aquí: apple.stackexchange.com/a/231020/49601
De la homebrew cask
documentación :
Dado que el repositorio homebrew-cask es un Homebrew Tap, desplegará los últimos Casks cada vez que emita el comando Homebrew normal
brew update
. Actualmente, homebrew-cask no siempre puede detectar si una aplicación se ha actualizado. Puede forzar una actualización a través del comandobrew cask install --force
. Estamos trabajando para mejorar esto.
Lo siguiente debería ser suficiente para actualizar tanto las fórmulas de preparación como los barriles.
brew upgrade --all
brew upgrade --all
es equivalente a brew upgrade
ahora. Los barriles no se actualizan con ese comando.
Esto es lo que tengo en mi .bash_profile que ejecuto para hacer una actualización completa de homebrew. "Fijo" un par de elementos para evitar que se descarguen descargas gigantes para cada actualización, porque sus versiones son siempre "más recientes" o no deberían actualizarse.
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)
}
Para reinstalar aplicaciones de brew cask en zsh:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
instalaciones que requieren la entrada del usuario (por ejemplo, cuarzo) . Además, no es necesario desinstalar todas las aplicaciones antes de volver a instalarlas. Idealmente, también debería ejecutar una actualización como la brew cask update
primera.
Esto realmente me molestó, así que creé este script para actualizar todas las aplicaciones Brew y permitir al usuario elegir qué aplicaciones Cask actualizar. También puede excluir las aplicaciones de la consideración.
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
Recomiendo la respuesta de @ eduncan911 en la pregunta de contraparte en Stack Overflow .
En breve:
brew-cask.sh
solo enumera una salida similar a la de Homebrew brew update
. la lista anterior muestra todos los paquetes instalados, con un verde que ✔
indica las actualizaciones pendientes.brew-cask.sh
upgrade forzará la actualización de esos paquetes.Instalar desde su repositorio 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
Entonces úsalo así:
$ brew-cask.sh
$ brew-cask.sh upgrade
Hice tal guión solo. Mire el github https://github.com/pesh1983/brew_cask_upgrade . Tiene una descripción bastante buena, pero si tiene alguna pregunta adicional, no dude en preguntarme. Realiza una actualización justa: desinstala e instala, por lo que cualquier limpieza necesaria será realizada por 'brew'.
Esto probablemente sería más apropiado como comentario, pero no tengo suficiente reputación para dejar uno, así que ...
A partir de este escrito, homebrew-cask
tiene su propio sistema de actualización, por lo que ya no se necesitan los scripts y herramientas de terceros.
Para enumerar barriles obsoletos: brew cask outdated
Para actualizar todos los barriles obsoletos: 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