brew pin可锁定指定包(如python@3.11)使其免于brew upgrade自动升级,brew list --pinned查看锁定列表,brew unpin解除锁定;锁定后该包不参与outdated和upgrade,但仍支持brew upgrade python@3.11手动升级或--ignore-pinned强制升级,配合homebrew_no_auto_update=1等环境变量可防止误删旧版本。
用 brew pin 命令就能锁定指定软件包,让它在 brew upgrade 时跳过升级。
怎么锁定一个包
比如你想固定当前安装的 Python 3.11 版本:
- 运行
brew pin python@3.11 - 锁定后,它不会出现在
brew outdated列表里 -
brew upgrade也不会动它,终端会明确提示“skipped”
怎么查看和管理锁定状态
随时掌握哪些包被锁住了:
- 列出所有被锁定的包:
brew list --pinned - 查看某个包是否被锁:
brew info node | grep Pinned(有输出即表示已锁) - 解除锁定(恢复可升级):
brew unpin python@3.11
锁定后还能手动升级吗
可以。锁定只防自动升级,不阻止你主动操作:
- 执行
brew upgrade python@3.11会先自动解锁,再升级 - 如果想强制升级所有包(包括已锁定的),加
--ignore-pinned参数:brew upgrade --ignore-pinned
让锁定更稳妥的小技巧
仅靠 pin 不足以完全防误删,尤其当你用虚拟环境依赖旧版本时:
- 在
~/.zshrc或~/.bashrc中添加两行: export HOMEBREW_NO_AUTO_UPDATE=1export HOMEBREW_NO_INSTALL_CLEANUP=1- 然后运行
source ~/.zshrc生效










