配置 Homebrew 不删除旧版本

Configure Homebrew to not delete old versions

当我通过自制程序安装软件包时,它会删除旧版本。

$ brew upgrade terraform
  /usr/local/Cellar/terraform/0.11.14: 6 files, 42.4MB
Removing: /usr/local/Cellar/terraform/0.11.13... (6 files, 120.6MB)
Removing: /Users/vikas/Library/Caches/Homebrew/terraform--0.11.13.mojave.bottle.tar.gz... (25.4MB)

如何禁用它以便我可以切换回旧版本。

$ brew switch [formula] [version]

这看起来很奇怪,因为自制软件通常不会立即删除旧版本,它通常会保留它们以便您稍后切换回来。除了也许你一直在做 brew cleanup.

如果您没有删除旧版本,那么您的程序的某些旧版本可能会处于非活动状态。您可以简单地使用 brew switch 重新激活那些以前的版本来酿造旧版本。例如

$ brew info mysql (to get info about the installed versions)
$ brew switch mysql 5.7.21 (to switch to a stable version)

或者,您可以像这样使用武力:例如

brew link --force mysql@5.7

除非您使用的是 2.0,否则会发生这种情况 as-of 2.0.0。自动清理是默认设置。使用 man brew 并查看如何 opt-out 此行为。

man brew

结帐brew --force

可以通过在 ~/.bashrc~/.zshrc 中设置变量 export HOMEBREW_NO_INSTALL_CLEANUP=TRUE(或特定于您的 shell)来避免这种行为。

完成后,您可以通过以下方式检查是否已正确应用:

$ brew config | grep HOMEBREW_NO_INSTALL_CLEANUP
HOMEBREW_NO_INSTALL_CLEANUP: TRUE
$

这是在 v1.9.0 中引入的,并且在 man brew 中也有记录,但很容易错过:)

Unless HOMEBREW_NO_INSTALL_CLEANUP is set, brew cleanup will be run for the installed formulae or, every 30 days, for all formulae

参考资料: - https://github.com/Homebrew/brew/issues/5654