Как удалить устаревшие бочки из Homebrew?

9

Я использую homebrew-cask, чтобы поддерживать свою экосистему приложений в актуальном состоянии. Это здорово, если вы поддерживаете несколько компьютеров дома, в пути или в пути.

Тем не менее, когда некоторые пакеты обновляются (например, Google Chrome), у меня в конечном итоге устанавливаются разные параллельные версии (которые видны в ОС):

$ ls / opt / homebrew-cask / Caskroom / google-chrome / последний стабильный канал

Это происходит при обновлении бочки:

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

Как мне сохранить только самые последние?

meduz
источник
ты пробовал brew cleanupи brew prune?
Дуайтк
да, я пытался, но это не относится к
бочкам
1
Это, по-видимому, обсуждается @ github.com/caskroom/homebrew-cask/issues/309
meduz
Все еще ищу ответ. Мои последние попытки включают удаление всех приложений и переустановку, не очень экологичную.
Медуз

Ответы:

1

В Терминале введите:

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

Подсказка: скопируйте и вставьте указанную выше командную строку в Терминал.

имя
источник
и не давайте один и тот же ответ более чем на один вопрос. Если на вопросы отвечают одинаково, тогда вопрос должен быть помечен / закрыт как дубликат
user151019
Привет @ имя, не могли бы вы отредактировать свой ответ, чтобы знать, что он делает, кажется загадочным (моя цитата дня: «stackoverflow не о решениях, а об ответах» :-))
meduz
Тем людям, которые продолжают пытаться редактировать этот пост, изменив данную сложную командную строку на скрипт, пожалуйста, остановитесь! Автор написал это как сложную командную строку, а не как скрипт. Пожалуйста, уважайте решение авторов разместить его как сложную командную строку, а не как скрипт!
user3439894
Помните , с новым Homebrew Caskroom месте вам нужно изменить /opt/homebrew-cask/Caskroom/к /usr/local/Caskroom/.
центре внимания
Просто к сведению тех, кто работает в будущем, кажется, это удаление / переустановка всех моих бочек. Кажется, не правильно определяет мою установленную версию? "[*] Найден атом в списке бочек. Последняя доступная версия - 1.11.2. Вы установили версию (-и):"
Glenn 'devalias'