配置Homebrew以不删除旧版本

13

当我通过 Homebrew 安装一个软件包时,它会自动删除旧版本。


$ 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]
2个回答

31

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

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

$ 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


这将删除以下内容:running brew cleanup mongocli`... 通过设置HOMEBREW_NO_INSTALL_CLEANUP来禁用此行为。 使用HOMEBREW_NO_ENV_HINTS隐藏这些提示(请参见man brew)。 - Timo

2

这看起来很奇怪,因为通常homebrew不会立即删除旧版本,它通常会保留它们,以便您稍后可以切换回去。除非您一直在执行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)

另外一种方法是使用强制,例如:e.g. -> 强制使用的方法如下:例如:e.g.
brew link --force mysql@5.7

如果你使用的是2.0版本及以上,那么是的,这种情况在2.0.0版本中已经默认开启了自动清理。如果不需要此行为,请参考man brew中的相关信息进行选择退出。另外可以查看man brew中的brew --force命令。

是的,确实如此。我正在使用v2.2.1版本。最近开始出现这种情况,可能是在我升级brew之后发生的:( 让我在他们的论坛上发布一个问题。我也会在这里更新解决方案。 - vikas027
1
是的,我相信“man brew”有解决方案。无论如何,请在他们的论坛上告诉我们你得到了什么。 - pasignature
我认为使用 brew --force 更好。这样 Homebrew 就不会检查以前的版本,而是让它们保持原样。 - pasignature

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接