Bagaimana cara menghapus tong usang dari Homebrew?

9

Saya menggunakan tong-tong homebrew untuk memperbarui ekosistem aplikasi saya. Sangat bagus ketika memelihara beberapa komputer di rumah, bepergian atau bepergian.

Namun, ketika beberapa paket diperbarui (seperti Google Chrome), saya akhirnya menginstal versi bersamaan yang berbeda (dan yang dilihat oleh OS):

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

Ini terjadi ketika memutakhirkan tong:

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

Bagaimana saya hanya menyimpan yang terbaru?

meduz
sumber
Sudahkah Anda mencoba brew cleanupdan brew prune?
dwightk
ya saya mencoba tetapi tidak berlaku untuk tong ...
meduz
1
Ini tampaknya dibahas @ github.com/caskroom/homebrew-cask/issues/309
meduz
Masih mencari jawaban. Upaya terbaru saya melibatkan menghapus semua aplikasi dan menginstal ulang, tidak terlalu ekologis.
meduz

Jawaban:

1

Di Terminal, ketik:

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

Petunjuk: Salin dan tempel baris perintah di atas ke Terminal.

nama
sumber
dan jangan memberikan jawaban yang sama untuk lebih dari satu pertanyaan. Jika pertanyaan dijawab sama, maka pertanyaan itu harus ditandai / ditutup sebagai duplikat
Mark
hi @name, bisakah Anda mengedit jawaban Anda untuk mengetahui fungsinya, sepertinya samar (kutipan saya hari ini: "stackoverflow bukan tentang solusi, tetapi tentang jawaban" :-))
meduz
Untuk individu yang terus mencoba mengedit posting ini dengan mengubah baris perintah kompleks yang diberikan ke skrip, harap berhenti! Penulis menulisnya sebagai baris perintah yang kompleks, bukan skrip. Harap hormati keputusan penulis untuk mempostingnya sebagai baris perintah yang kompleks, bukan skrip!
user3439894
Ingat dengan lokasi Homebrew Caskroom baru Anda perlu mengubah /opt/homebrew-cask/Caskroom/ke /usr/local/Caskroom/.
Spotlight
Hanya FYI bagi mereka yang menjalankan ini di masa depan, sepertinya itu menghapus / menginstal ulang semua tong saya. Tampaknya tidak mendeteksi versi yang diinstal dengan benar? "[*] Ditemukan atom dalam daftar tong. Versi terbaru yang tersedia adalah 1.11.2. Anda telah menginstal versi:"
Glenn 'devalias'