¿Hay alguna forma de actualizar todos los brew cask
s? Algo como brew cask upgrade
?
¿Hay alguna forma de actualizar todos los brew cask
s? Algo como brew cask upgrade
?
inspirado en 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:\ \(.*\)//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
Lo que hace
brew cask info
para la versión más reciente fuente: enlace
un trazador de líneas para impaciente:
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 puedas ejecutarlo localmente como cask-upgrade
más adelante
Creo que esta es, con mucho, la mejor solución para actualizar los cascos.
fuente: enlace
Instalación & uso
brew tap buo/cask-upgrade
brew update
brew cu
(Opcional) Forzar la actualización de aplicaciones obsoletas, incluidas las marcadas como últimas:
brew cu --all
Como dice la cita en la otra respuesta, actualmente no hay manera de actualizar todos los barriles actualizados.
La segunda parte de la respuesta es incorrecta, sin embargo: brew upgrade --all
no puede actualizar los cascos.
La única forma de actualizar todos los cascos es obtener una lista de los cascos instalados y obligarlos a reinstalarlos, ¡incluidos los que no han cambiado!
En fish , puedes hacerlo 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 .
Por favor, vota su respuesta en lugar de esta.
De la homebrew cask
documentation :
Dado que el repositorio de cascos de homebrew es un Tap de Homebrew, tirarás hacia abajo los últimos Casks cada vez que emites el comando regular de Homebrew %código%. Actualmente, Homebrew-Cask no siempre puede detectar si un La aplicación ha sido actualizada. Puede forzar una actualización a través del comando %código%. Estamos trabajando para mejorar esto.
Lo siguiente debería ser suficiente para actualizar tanto las fórmulas de preparación como las barricas.
brew upgrade --all
Esto es lo que tengo en mi .bash_profile que ejecuto para hacer una actualización completa de homebrew. "Fijé" un par de elementos para evitar que se descarguen repetidamente descargas gigantescas 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 las 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
Recomiendo la respuesta de @ eduncan911 en la pregunta de la contraparte sobre el desbordamiento de pila .
En resumen:
brew-cask.sh
solo enumera una salida similar a brew update
de Homebrew.
la lista anterior muestra todos los paquetes instalados, con un ✔
verde que indica cualquier actualización pendiente. 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 por mí mismo. Mire el github enlace . Tiene una buena descripción, pero si tiene alguna pregunta adicional, no dude en preguntarme. Realiza una actualización justa: desinstale e instale, por lo que cualquier limpieza necesaria se realizará por 'brew' en sí.
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
Lea otras preguntas en las etiquetas homebrew