homebrew不直接支持安装任意历史版本,但可通过多版本公式(如node@20)、cask-versions仓库(如firefox-developer-edition)及brew extract等方法实现主流软件特定版本的安装与管理。

Homebrew 本身不直接支持“安装某个软件的任意历史版本”,但它通过多版本公式(formula)和 cask-versions 仓库,提供了对主流软件特定版本(如旧版、LTS、beta、dev)的官方支持。关键在于区分两类包:命令行工具(formula)和 GUI 应用(cask),它们的版本管理方式不同。
安装带版本号的命令行工具
很多开发工具(如 Node.js、OpenJDK、Python)在 Homebrew 主仓库中就提供了带版本后缀的公式。这些不是“快照版本”,而是官方维护的长期支持或主流版本分支。
- 查看可用版本:运行
brew search node或brew search openjdk,会列出node@18、node@20、openjdk@17、openjdk@21等 - 安装指定版本:直接执行
brew install node@20或brew install openjdk@17 - 注意:这类版本默认是 keg-only(不自动链接到
/opt/homebrew/bin),需手动链接或配置PATH才能在终端直接调用
切换已安装的命令行工具版本
Homebrew 允许同时安装多个版本,再通过 brew link / brew unlink 控制哪个版本生效。
- 安装两个版本:例如
brew install node@16 node@20 - 激活某一个:先解除当前链接(如
brew unlink node),再强制链接目标版本(brew link --force node@20) - 验证:运行
node -v查看当前生效版本 - 提示:部分工具(如 Java)还需设置
JAVA_HOME,可用/usr/libexec/java_home -v 17获取路径
安装 GUI 应用的替代版本(Beta / Canary / Legacy)
GUI 应用(如 Chrome、Firefox、Visual Studio Code)的非稳定版或旧版,集中在 homebrew/cask-versions 仓库中。
- 先添加仓库:
brew tap homebrew/cask-versions - 搜索可用变体:
brew search --cask firefox可能返回firefox、firefox-developer-edition、firefox-esr - 安装特定变体:
brew install --cask firefox-developer-edition - 注意:每个 cask 是独立安装项,互不冲突;可同时存在多个,但系统只认最后安装的那个为“默认 Firefox”(取决于 Launchpad 或 Spotlight 行为)
无法直接安装的“任意历史版本”怎么办?
Homebrew 不提供类似 brew install git@2.35.0 这样的精确版本语法。若你需要非常规旧版(如已从主仓库移除的 python@3.8),有几种可行路径:
- 查 GitHub 历史提交:访问 homebrew-core/Formula,找到对应公式的旧 commit,复制其 Ruby 内容,用
brew install <url></url>直接安装(需确认兼容性) - 使用
brew extract(高级功能):将某个旧版 formula 提取到个人 tap,适合长期维护特定旧环境 - 搭配 jenv / nvm / pyenv:对 Java / Node / Python 这类语言运行时,推荐用专用版本管理器(jenv、nvm、pyenv)配合 Homebrew 安装底层依赖,更灵活可靠











