Como remover barris desatualizados do Homebrew?

9

Estou usando o homebrew-cask para manter meu ecossistema de aplicativos atualizado. É ótimo ao manter vários computadores em casa, em viagens ou em trânsito.

No entanto, quando alguns pacotes estão sendo atualizados (como o Google Chrome), acabo tendo diferentes versões simultâneas instaladas (e que são vistas pelo sistema operacional):

$ ls / opt / homebrew-cask / Caskroom / google-chrome / canal estável mais recente

Isso acontece ao atualizar um 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 ~

Como mantenho apenas as mais recentes?

meduz
fonte
você já tentou brew cleanupe brew prune?
precisa saber é o seguinte
sim eu tentei, mas não se aplica a barris ...
meduz 26/06
1
Aparentemente, isso é discutido @ github.com/caskroom/homebrew-cask/issues/309
meduz
Ainda está procurando uma resposta. Minhas últimas tentativas envolvem remover todos os aplicativos e reinstalar, não muito ecológicos.
meduz 15/09/16

Respostas:

1

No Terminal, digite:

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

Dica: copie e cole a linha de comando acima no Terminal.

nome
fonte
e não dê a mesma resposta a mais de uma pergunta. Se as perguntas são respondidas da mesma, em seguida, a questão deve ser marcada / fechada como uma duplicata
Mark
oi @name, você pode editar sua resposta para saber o que ele faz, parece críptico (minha frase do dia: "stackoverflow não é sobre as soluções, mas cerca de respostas" :-))
meduz
Para as pessoas que continuam tentando editar esta postagem alterando a linha de comando complexa em um script, pare! O autor escreveu como uma linha de comando complexa, não como um script. Por favor, respeite a decisão dos autores de publicá-la como uma linha de comando complexa, não como um script!
User3439894
Lembre-se com o novo Homebrew Caskroom local que você precisa mudar /opt/homebrew-cask/Caskroom/para /usr/local/Caskroom/.
Spotlight
Apenas um FYI para quem está executando isso no futuro, parece que está desinstalando / reinstalando todos os meus barris. Parece não detectar corretamente minha versão instalada? "[*] Átomo encontrado na lista de barris. A versão mais recente disponível é 1.11.2. Você instalou versões:"
Glenn 'devalias'