4.2 更新、升级与版本固定
2 分钟阅读
原文链接: https://docs.brew.sh/FAQ
更新软件定义:brew update
Homebrew 是滚动发布(rolling release)的包管理器。软件“配方”更新与软件本体升级是两件事。先更新所有 formula 定义以及 Homebrew 自身:
| |
查看过期软件:brew outdated
| |
列出你已安装但已有新版本的软件包(keg)。
升级:brew upgrade
升级所有软件:
| |
只升级某一个 formula:
| |
为什么一次 upgrade 会连带升级很多软件
Homebrew 不支持随意混搭 formula 的不同版本。某个 formula 依赖的一切,以及反过来依赖它的软件,都必须升级到 Homebrew 官方测试过的最新版本组合。因此一次 brew upgrade <formula> 或 brew install <formula> 常常会顺带升级很多看似无关的 formula——尤其是 python、openssl 这类底层软件需要升级时。
阻止某个软件更新:brew pin
如果不想让某个 formula/cask 被更新:
| |
以后允许它再次更新:
| |
需要注意:
- 被 pin 的 formula 若被其他 formula 依赖,当依赖方必须升级时仍会要求升级它——Homebrew 不允许基于旧版本构建 formula。如果这不是你想要的,参见官方 Locking installed formulae at specific versions;
- pin 只作用于
brew upgrade;cask 应用自己的自动更新器仍可能绕过 Homebrew 更新它。
完全不自动更新
如果连“Homebrew 自动获知新版本”也想关闭,可在 shell 配置中设置:
| |
之后手动执行 brew update 即可获取更新。这个开关的取舍与替代方案,同样可以参考官方 Locking 文档。
升级的推荐流程
| |
在大型升级前,先执行 brew outdated 看清单;升级后若出现异常,见 第 8 章。