¿Cómo eliminar barriles obsoletos de Homebrew?

9

Estoy usando homebrew-cask para mantener actualizado mi ecosistema de aplicaciones. Es excelente cuando se mantienen varias computadoras en casa, de viaje o en movimiento.

Sin embargo, cuando se actualizan algunos paquetes (como Google Chrome), termino teniendo instaladas diferentes versiones concurrentes (y que son vistas por el sistema operativo):

$ ls / opt / homebrew-cask / Caskroom / google-chrome / latest stable-channel

Esto sucede al actualizar un barril:

$ ls -l /opt/homebrew-cask/Caskroom/tunnelblick
total 0
drwxr-xr-x 5 foo staff 238 Mar 11 07:42 3.3.0
drwxr-xr-x 5 foo staff 238 May 13 13:53 3.3.2
[13:00:40] foo at bar in ~
$ brew cask install --force tunnelblick
==> Caveats
For security reasons, Tunnelblick must be installed to /Applications and will request to be moved at launch.

==> Downloading https://downloads.sourceforge.net/project/tunnelblick/All%20files/Tunnelblick_3.3.4.dmg
######################################################################## 100.0%
==> It seems there is already an App at '/Applications/Tunnelblick.app'; not linking.
🍺  tunnelblick installed to '/opt/homebrew-cask/Caskroom/tunnelblick/3.3.4' (236 files, 20M)

$ ls -l /opt/homebrew-cask/Caskroom/tunnelblick
total 0
drwxr-xr-x 5 foo staff 238 Mar 11 07:42 3.3.0
drwxr-xr-x 5 foo staff 238 May 13 13:53 3.3.2
drwxr-xr-x 5 foo staff 238 Jun 26 13:01 3.3.4
[13:01:26] foo at bar in ~

¿Cómo guardo solo la más reciente?

Meduz
fuente
has intentado brew cleanupy brew prune?
dwightk
Sí he intentado pero no se aplica a barricas ...
meduz
1
Esto aparentemente se discute en @ github.com/caskroom/homebrew-cask/issues/309
meduz
Sigo buscando una respuesta. Mis últimos intentos incluyen la eliminación de todas las aplicaciones y la reinstalación, no muy ecológica.
Meduz

Respuestas:

1

En Terminal, escriba:

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

Sugerencia: copie y pegue la línea de comando anterior en la Terminal.

nombre
fuente
y no le dé la misma respuesta a más de una pregunta. Si las preguntas se responden de la misma manera, la pregunta debe
marcarse
hola @nombre, ¿podrías editar tu respuesta para saber qué hace? Parece críptico (mi cita del día: "stackoverflow no se trata de soluciones, sino de respuestas" :-))
meduz
Para las personas que siguen tratando de editar esta publicación cambiando la línea de comando compleja dada a un script, por favor, ¡deténganse! El autor lo escribió como una línea de comando compleja, no como un script. ¡Respete la decisión de los autores de publicarlo como una línea de comando compleja, no como un script!
user3439894
Recuerde que con la nueva ubicación Homebrew Caskroom necesita cambiar /opt/homebrew-cask/Caskroom/a /usr/local/Caskroom/.
Spotlight
Solo un FYI para aquellos que ejecuten esto en el futuro, parece que está desinstalando / reinstalando todos mis barriles. ¿No parece detectar correctamente mi versión instalada? "[*] Se encontró un átomo en la lista de barriles. La última versión disponible es 1.11.2. Ha instalado versiones:"
Glenn 'devalias'