¿Hay alguna manera de actualizar el barril de elaboración?

34

¿Hay alguna forma de actualizar todos los brew cask s? Algo como brew cask upgrade ?

    
pregunta demas 04.06.2015 - 10:58

11 respuestas

22

Bash script para actualizar paquetes

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

  • actualizar brew / brew cask, cleanup
  • lee la lista de barriles
  • compruebe el brew cask info para la versión más reciente
  • instale la nueva versión si está disponible (¡y elimina todas las versiones anteriores!

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

    
respondido por el Atais 15.03.2016 - 02:00
18

homebrew-cask-upgrade

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
    
respondido por el Atais 21.09.2016 - 11:19
11

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.

    
respondido por el Pascal 11.11.2015 - 14:38
9

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 
    
respondido por el jherran 04.06.2015 - 11:14
8

A partir de diciembre de 2017, brew cask upgrade es una cosa.

enlace

    
respondido por el Raúl Cuza 06.12.2017 - 03:25
5

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)
}
    
respondido por el MithrilTuxedo 22.12.2015 - 01:26
1

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
    
respondido por el sqren 21.04.2016 - 09:35
0

Esto realmente me ha irritado, así que creé este script para actualizar todas las aplicaciones de Brew y permitir al usuario elegir qué aplicaciones de Cask actualizar. También puede excluir aplicaciones de consideración.

enlace

    
respondido por el Derrek 05.08.2016 - 23:42
0

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
    
respondido por el lucianf 25.10.2016 - 09:54
0

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í.

    
respondido por el Pavel Goltsev 24.01.2017 - 11:20
-1
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
    
respondido por el name 28.04.2016 - 10:53

Lea otras preguntas en las etiquetas