Brew: как удалить устаревшую версию пакета

15

Доморощенный обновляет себя, чтобы варить . И похоже, что сопровождающие не реализовали некоторые ежедневные команды, такие как brew cleanup.

Так кто-нибудь знает, как автоматически удалить устаревшую версию программного обеспечения?

$ brew
Example usage:
  brew search [TEXT|/REGEX/]
  brew (info|home|options) [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]

Troubleshooting:
  brew config
  brew doctor
  brew install -vd FORMULA

Brewing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]
  https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Formula-Cookbook.md

Further help:
  man brew
  brew help [COMMAND]
  brew home
Джек М
источник
2
Я уверен, что это просто brew clean.
At0mic

Ответы:

27

Команда, которую вы хотите, cleanup- при запуске brew cleanupудалит пакеты, которые находятся на диске, но больше не установлены.

> brew help cleanup
brew cleanup [--prune=days] [--dry-run] [-s] [formulae]:
    For all installed or specific formulae, remove any older versions from the
    cellar. In addition, old downloads from the Homebrew download-cache are deleted.

    If --prune=days is specified, remove all cache files older than days.

    If --dry-run or -n is passed, show what would be removed, but do not
    actually remove anything.

    If -s is passed, scrubs the cache, removing downloads for even the latest
    versions of formulae. Note downloads for any installed formulae will still not be
    deleted. If you want to delete those too: rm -rf $(brew --cache)

Например:

> brew cleanup
Removing: /usr/local/Cellar/awscli/1.10.19... (2,955 files, 22.3M)
Removing: /usr/local/Cellar/git/2.8.2... (1,418 files, 30.5M)
Removing: /usr/local/Cellar/imagemagick/6.9.3-7... (1,459 files, 17.9M)
Removing: /usr/local/Cellar/libgcrypt/1.7.0... (17 files, 1.5M)
Removing: /usr/local/Cellar/libgpg-error/1.21... (19 files, 419.4K)
Removing: /usr/local/Cellar/libksba/1.3.3... (13 files, 343K)
Removing: /usr/local/Cellar/mercurial/3.7.3... (386 files, 4.7M)
Removing: /usr/local/Cellar/node/6.0.0... (3,655 files, 38.8M)
Removing: /usr/local/Cellar/openssl/1.0.2g... (1,678 files, 12.0M)
Removing: /usr/local/Cellar/vim/7.4.1795... (1,687 files, 22.6M)
Removing: /Library/Caches/Homebrew/git-2.8.2.el_capitan.bottle.tar.gz... (11.2M)
Removing: /Library/Caches/Homebrew/imagemagick-6.9.3-7.el_capitan.bottle.tar.gz... (7M)
Removing: /Library/Caches/Homebrew/libgcrypt-1.7.0.el_capitan.bottle.tar.gz... (565.4K)
Removing: /Library/Caches/Homebrew/libgpg-error-1.21.el_capitan.bottle.tar.gz... (130.8K)
Removing: /Library/Caches/Homebrew/libksba-1.3.3.el_capitan.bottle.tar.gz... (126.6K)
Removing: /Library/Caches/Homebrew/node-6.0.0.el_capitan.bottle.tar.gz... (10.9M)
Removing: /Library/Caches/Homebrew/openssl-1.0.2g.el_capitan.bottle.tar.gz... (3.6M)
Removing: /Library/Caches/Homebrew/vim-7.4.1795.tar.gz... (12.0M)
==> This operation has freed approximately 196.4M of disk space.

У меня в понедельник утром режим:

brew update
brew upgrade
brew cleanup

Это подводит меня к обновлению Homebrew, затем ко всем моим установленным варевам, а затем освобождает место на диске, удаляя старые варевы, на которые больше нет ссылок. Для варев, которые мне нужно хранить в определенной версии, я использую brew pinих, чтобы по-прежнему запускать эту простую цепочку из трех команд, чтобы обновить все остальное вокруг закрепленных пакетов.

Ян С.
источник
1

Не ответ, но слишком длинный для комментария, вот код, который я использую в качестве режима для поддержания своего напитка в актуальном состоянии:

    fullBrewUpdate(){
            brew update
            brew cask update

            casks=( $(brew cask list) )

            for cask in ${casks[@]}
            do
                # in the first line there is version
                    current="$(brew cask info $cask | sed -n '1p' | sed -n 's/^.*: \(.*\)$/\1/p')"

                    installed=( $(ls /opt/homebrew-cask/Caskroom/$cask))
                    if (! [[ " ${installed[@]} " == *" $current "* ]]); then
                            (set -x; brew cask install $cask --force;)
                    fi
            done

            brew upgrade
            brew cleanup
    }

Я сохранил его в моем, ~/.bash_profileчтобы я мог вызвать его из терминала как имя функции на лету.

Даниэль-Джеймс W
источник
1
По крайней мере, в версии brew 1.5.12, brew cask updateотключено. Error: Calling 'brew cask update' is disabled! Use 'brew update' instead.
dotnetCarpenter