核心思路是先查版本化公式(如node@16、python@3.9),再install并force link;未收录版本需回溯历史commit安装;频繁切换推荐nvm/pyenv。
在 macos 上用 homebrew 安装特定版本的开发工具(如 node.js、python、ruby 等),核心思路是:先确认目标版本是否被官方 formula 支持,再通过版本化命名或历史 commit 精准安装。homebrew 并不默认提供“任意旧版一键安装”,但对主流工具的长期支持版本(如 node@16、python@3.9)有专门维护,老版本则需手动回溯。
查可用的版本化公式
很多常用开发工具在 Homebrew Core 中以主版本号命名,例如:
-
Node.js:运行
brew search node@,常见结果包括node@14、node@16、node@18、node@20 -
Python:运行
brew search python@,可看到python@3.9、python@3.11、python@3.12等 -
OpenSSL:运行
brew search openssl@,可能返回openssl@1.1(已归档)、openssl@3
这些带 @ 的包名即为官方维护的稳定旧版本公式,可直接安装,无需额外操作。
安装并正确链接版本
安装后默认不会自动链接到系统路径,需手动处理才能让 node 或 python3 命令指向你选的版本:
- 先解除当前链接:
brew unlink node(若已装其他 node) - 安装目标版本:
brew install node@16 - 强制链接:
brew link --force node@16 - 验证:
node -v应输出类似v16.20.2
注意:多次链接不同 @ 版本时,后一次 link --force 会覆盖前一次,无需卸载旧版即可切换。
安装未被保留的更老版本(如 node@15、python@3.7)
若 brew search 找不到目标版本,说明它未被当前 Homebrew Core 收录。此时需从历史提交中提取 formula:
- 访问 https://www.php.cn/link/3ef76bc9c1a3df4d801633aa739692c6
- 按时间倒序浏览,找到含目标版本号(如
15.14.0)的 commit,复制其 SHA(如f3e8a1b) - 新建个人 tap:
brew tap-new $USER/old - 下载该 commit 的 formula:
curl -s https://raw.githubusercontent.com/Homebrew/homebrew-core/f3e8a1b/Formula/node.rb > $(brew --repo $USER/old)/Formula/node.rb - 锁定 tap:
brew tap-pin $USER/old - 安装:
brew install $USER/old/node
安装失败时,可加 --build-from-source 强制编译,或检查 formula 中 depends_on 是否需要先装旧依赖(如 openssl@1.1)。
推荐搭配 nvm 或 pyenv 管理多版本
如果项目频繁切换版本(如同时维护 Node 14/16/20 或 Python 3.8/3.11/3.12),纯靠 Homebrew 安装 + link 切换较繁琐。更灵活的做法是:
- 用
brew install nvm,然后nvm install 16.20.2 && nvm use 16.20.2 - 用
brew install pyenv,然后pyenv install 3.9.18 && pyenv global 3.9.18
这类版本管理器不依赖系统 PATH,每个项目可独立指定版本,且支持未被 Homebrew 收录的任意发布版。











