sierra not mac found macos homebrew homebrew-cask

macos - not - install brew windows



Actualice todos los barriles instalados a través de Homebrew Cask (17)

Uso Homebrew Cask para instalar aplicaciones en OS X. ¿Cómo actualizo todos los barriles instalados?


Bash script para actualizar paquetes

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

  • actualizar brew / brew cask, limpieza
  • lee la lista de barriles
  • verifique la brew cask info para la versión más nueva
  • instale una nueva versión si está disponible (¡y elimina todas las versiones antiguas!)

fuente: 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 como cask-upgrade más tarde


homebrew-cask-upgrade

Creo que esta es, con mucho, la mejor solución para actualizar los barriles.
fuente: 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


A partir de diciembre de 2017 uso: actualización de brew cask

[DEPRECADO desde diciembre de 2017 cuando Homebrew introdujo el comando de actualización para barrica] Simplemente uso lo siguiente:

brew cask outdated | xargs brew cask reinstall


Aquí está la función que he escrito para manejar esto. Tenga en cuenta que personalmente no quería que solo reinstalara ciegamente todo, ya que algunos de los barriles que uso tardan un tiempo en instalarse o requieren indicaciones adicionales.

brew-cask-upgrade() { if [ "$1" != ''--continue'' ]; then echo "Removing brew cache" rm -rf "$(brew --cache)" echo "Running brew update" brew update fi for c in $(brew cask list); do echo -e "/n/nInstalled versions of $c: " ls /opt/homebrew-cask/Caskroom/$c echo "Cask info for $c" brew cask info $c select ynx in "Yes" "No" "Exit"; do case $ynx in "Yes") echo "Uninstalling $c"; brew cask uninstall --force "$c"; echo "Re-installing $c"; brew cask install "$c"; break;; "No") echo "Skipping $c"; break;; "Exit") echo "Exiting brew-cask-upgrade"; return;; esac done done }


Basado en la respuesta de @Atais, he mejorado su lógica en algo más agradable. Quería una forma de inspeccionar los paquetes que se actualizaron primero, antes de forzar la actualización.

  • $ brew-cask.sh solo muestra una salida similar a la brew update de Homebrew.
  • 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.

Código:

# Usage: # # $ brew update # You should execute this first to update everything locally. # # $ brew-cask.sh [update] # This will list all of your cask packages and rather there is an upgrade # pending with a ✔ checkmark, just like Homebrew does with "brew update". # The update command is optional, as it doesn''t actually do any tracking, there''s # not really anything to "update" with cask. But it keeps with the pattern of # of Homebrew''s "brew update" pattern for those with memory muscle fingers (like me). # # $ brew-cask.sh upgrade # This performs a "brew cask install <cask> --force" of all cask packages that have # an update pending. # # This code was inspired by http://.com/a/36000907/56693 # get the list of installed casks casks=( $(brew cask list) ) if [[ "$1" == "upgrade" ]]; then for cask in ${casks[@]}; do current="$(brew cask info $cask | sed -n ''1p'' | sed -n ''s/^.*: /(.*/)$//1/p'')" installed=( $(ls /opt/homebrew-cask/Caskroom/$cask)) if (! [[ " ${installed[@]} " == *" $current "* ]]); then echo "Upgrading $cask to v$current." (set -x; brew cask install $cask --force;) else echo "$cask v$current is up-to-date, skipping." fi done else echo "Inspecting ${#casks[@]} casks. Use ''brew-cask.sh upgrade'' to perform any updates." for (( i = i ; i < ${#casks[@]} ; i++ )); do current="$(brew cask info ${casks[$i]} | sed -n ''1p'' | sed -n ''s/^.*: /(.*/)$//1/p'')" installed=( $(ls /opt/homebrew-cask/Caskroom/${casks[$i]})) if (! [[ " ${installed[@]} " == *" $current "* ]]); then casks[$i]="${casks[$i]}$(tput sgr0)$(tput setaf 2) ✔$(tput sgr0)" fi done echo " ${casks[@]/%/$''/n''}" | column fi

simplemente instálelo (también conocido como "¡Lo necesito ahora!")

Está registrado en mi repositorio de .dotfiles ; entonces, puede instalarlo rápidamente en su ~/bin 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

Luego úsalo así:

$ brew-cask.sh $ brew-cask.sh upgrade

Si no tiene ~/bin en su ruta, prefije ~/bin/ a las declaraciones anteriores.


Creo que usando

brew cask reinstall `brew cask outdated`

Hará el truco. Esto también ayudará a eliminar las versiones anteriores de la aplicación e instalará la versión más reciente.


Es posible enumerar los barriles instalados con:

brew cask list

Y forzar la reinstalación de un barril con:

brew cask install --force CASK_NAME

Así que canalizando la salida del primer comando al segundo, actualizamos todos los barriles:

brew cask list | xargs brew cask install --force


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.

github.com/derrekyoung/ScriptsAndUtils/blob/master/…


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


Según lo que he leído, he creado un script que creará un archivo que enumera los archivos que se actualizarán, incluidas las aplicaciones que se definen como las más recientes. Luego puede modificar el archivo para adaptarlo a sus requisitos e instalar actualizaciones utilizando mi script olinst.

Para más información visita mi github.

https://github.com/pacav69/caskroom-offline-install


Verifique los barriles obsoletos:

barril de cerveza anticuado

Actualización de todos los barriles obsoletos:

actualización de barril de cerveza

Si desea actualizar un barril específico, simplemente agregue el nombre del barril después de la actualización (por ejemplo: 4k-video-downloader):

actualización de brew cask 4k-video-downloader


mejorando el código proporcionado por deinspanjer, traté de imitar un comando noop, muy parecido al de chocolatey ( actualización de choco --noop / choco desactualizado ).

https://git.io/vgjiL

#!/bin/sh fetch(){ echo "Removing brew cache" rm -rf "$(brew --cache)" echo "Running brew update" brew update } lookup() { for c in $(brew cask list); do brew cask info $c done } update(){ var=$( lookup | grep -B 3 ''Not installed'' | sed -e ''/^http/d;/^Not/d;/:/!d'' | cut -d ":" -f1) if [ -n "$var" ]; then echo "The following installed casks have updates avilable:" echo "$var" echo "Install updates now?" select yn in "Yes" "No"; do case $yn in "Yes") echo "updating outdated casks"; break;; "No") echo "brew cask upgrade cancelled" ;return;; *) echo "Please choose 1 or 2";; esac done for i in $var; do echo "Uninstalling $c"; brew cask uninstall --force "$i"; echo "Re-installing $i"; brew cask install "$i" done else echo "all casks are up to date" fi } fetch update

Como se puede ver, estoy usando un enfoque modular ya que mi caso de uso difiere un poco. No quiero sentarme frente a mi computadora y escribir sí / no para cada aplicación que haya instalado. Si bien no hay una forma real de actualizar los barriles (solo reinstalar la versión más reciente), primero preparo la actualización para tener la información de que realmente hay actualizaciones disponibles .

A continuación, recorro todos los barriles para mostrar su información. Debido a que preparé la actualización antes, ahora se proporciona una con la información de que la última versión de algunos barriles no está instalada.

Dentro de mi método de actualización, en realidad analizo el comando de información para esa línea específica:

lookup | grep -B 3 ''Not installed'' | sed -e ''/^http/d;/^Not/d;/:/!d'' | cut -d ":" -f1

Lo que se traduce en: "Dé las 3 líneas de arriba de la información proporcionada siempre que lea la línea" no instalada ". Luego elimine cualquier línea que tenga un enlace, también elimine una línea que tenga un '':'' en ella".

Dada la estructura del comando de información brew cask, terminamos con una línea (sin información de versión, sin URL de aplicación), que refleja el nombre real del barril con el que también se instaló.

salida de información de barril de cerveza

En mi versión, esta información ahora se imprime para que uno pueda ver fácilmente qué barriles están desactualizados y podrían actualizarse.

En este punto, hago un caso de cambio, porque tal vez en este momento no hay suficiente tiempo para actualizar las cosas. Depende de su caso de uso. Para mí, a veces solo quiero ver qué hay de nuevo (esperando una nueva versión, una corrección de errores) pero en realidad no tengo tiempo para actualizar las cosas porque en este momento no quiero cerrar mi navegador, etc.

Por lo tanto, si uno opta por "sí", la lista de nombres limpios de los barriles se proporciona a la función de actualización donde se emite la reinstalación para cada barril que se determinó que no estaba actualizado.

Gracias de nuevo a deinspanjer, mientras intentaba resolver este problema por mí mismo, siempre olvidé emitir una actualización de preparación de antemano, por lo que no había una línea "no instalada" para analizar realmente (la base de todo mi enfoque).

Espero que esto haya sido útil.


obtener barriles obsoletos:

barril de cerveza anticuado

barril de actualización:

barril de cerveza reinstalar barril obsoleto

script de demostración:

$ cat ~/bin/brew_cask_upgrade.sh #!/bin/bash red=$(tput setaf 1) # green=$(tput setaf 2) reset=$(tput sgr0) (set -x; brew update;) for cask in $(brew cask outdated | awk ''{print $1}'') do echo "${red}update ${cask} ...${reset}." (set -x; brew cask install --force "$cask";) done echo "${red}brew clean up ...${reset}" (set -x; brew cask cleanup;) echo "${red}brew clean up done.${reset}"


yo suelo

brew cask install --force `brew cask list`


brew cask upgrade

El comando de upgrade se ha introducido recientemente en Homebrew Cask y debería desaprobar todos los demás métodos manuales descritos en las otras respuestas.


Actualización de diciembre de 2017

¡Pensé que nunca sucedería, pero ahora finalmente hay un mecanismo de actualización oficial para Homebrew Cask (vea el número 3396 para la implementación)! Para usarlo, simplemente ejecute este comando:

brew cask upgrade

Sin embargo, esto no actualizará los barriles que no tengan información de versiones ( version :latest ) o aplicaciones que tengan un mecanismo de actualización auto_updates true ( auto_updates true ). Para reinstalar estos barriles (y, en consecuencia, actualizarlos si hay actualizaciones disponibles), ejecute el comando de actualización con el indicador --greedy esta manera:

brew cask upgrade --greedy

Actualización de marzo de 2017 (cuenta el juego de palabras;) (@polo)

Encontré algunas actualizaciones ya que esto fue originalmente respondido. Para una solución alternativa, ahora puede usar la brew cask reinstall :

brew cask reinstall <cask_name> brew cask list | xargs brew cask reinstall

El problema 4678 mencionado en la respuesta original se cerró y la función de actualización ahora se analiza en el problema # 29301 También hay buo/homebrew-cask-upgrade , un paquete externo que agrega un comando de actualización para preparar el barril. Lo he probado en algunos paquetes con éxito.

Respuesta original

No existe un método oficial para actualizar los barriles caseros. Actualmente se está trabajando en esto, pero aún está muy lejos de completarse. Vea el número 4678 para más detalles. Ese problema también tiene algunos ejemplos de scripts que los usuarios usan para actualizar todos sus barriles. La forma más sencilla de actualizar un solo barril sería ejecutar brew cask install --force <cask_name> , pero solo sepa que existe la posibilidad de que esto pueda causar problemas con su aplicación, ya que no se desinstalará correctamente primero. Por lo general, eso no es un problema.

Puede actualizar todos los barriles instalados utilizando el siguiente comando de shell:

brew cask list | xargs brew cask install --force

Para referencia futura, se pueden encontrar más detalles en el problema duplicado en github .


brew cask outdated | xargs brew cask reinstall --force