Comment supprimer les fûts obsolètes de Homebrew?

9

J'utilise homebrew-cask pour maintenir mon écosystème d'applications à jour. Il est idéal pour entretenir plusieurs ordinateurs à la maison, en voyage ou en déplacement.

Cependant, lorsque certains packages sont mis à jour (tels que Google Chrome), je finis par avoir différentes versions simultanées installées (et qui sont vues par le système d'exploitation):

$ ls / opt / homebrew-cask / Caskroom / google-chrome / dernier canal stable

Cela se produit lors de la mise à niveau d'un fût:

$ 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 ~

Comment ne conserver que les plus récents?

meduz
la source
avez-vous essayé brew cleanupet brew prune?
dwightk
oui j'ai essayé mais ça ne s'applique pas aux fûts ...
meduz
1
Ceci est apparemment discuté @ github.com/caskroom/homebrew-cask/issues/309
meduz
Toujours à la recherche d'une réponse. Mes dernières tentatives consistent à supprimer toutes les applications et à les réinstaller, pas très écologiques.
meduz

Réponses:

1

Dans Terminal, saisissez:

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

Astuce: copiez et collez la ligne de commande ci-dessus dans le terminal.

Nom
la source
et ne donnez pas la même réponse à plus d'une question. Si les questions reçoivent la même réponse, la question doit être signalée / fermée en tant que doublon
user151019
salut @name, pourriez-vous modifier votre réponse pour savoir ce qu'elle fait, semble cryptique (ma citation du jour: "stackoverflow n'est pas une question de solutions, mais une question de réponses" :-))
meduz
Aux personnes qui continuent d'essayer de modifier ce message en changeant la ligne de commande complexe donnée en un script, veuillez arrêter! L'auteur l'a écrit comme une ligne de commande complexe, pas comme un script. Merci de respecter la décision des auteurs de le poster sous forme de ligne de commande complexe, pas de script!
user3439894
Rappelez - vous avec le nouvel emplacement Homebrew Caskroom vous devez changer /opt/homebrew-cask/Caskroom/pour /usr/local/Caskroom/.
Spotlight
Juste un FYI pour ceux qui l'exécuteront à l'avenir, il semble qu'il désinstalle / réinstalle tous mes fûts. Ne semble pas détecter correctement ma version installée? "[*] Atome trouvé dans la liste des fûts. La dernière version disponible est 1.11.2. Vous avez installé une ou des versions:"
Glenn 'devalias'