在使用 Homebrew 安装软件时,经常会遇到类似:
brew tap xxx/yyy
brew install xxx/yyy/software最开始接触时产生过几个疑惑:Tap 是什么,为什么安装某些软件需要 tap,tap 后需要切换回来吗,可以 untap 吗,tap 和软件源有什么区别。
本文整理 Homebrew Tap 的概念和使用方式。关于 Homebrew 的基础用法,见 Homebrew:MacOS 上的软件包管理。
什么是 Homebrew Tap?
Tap 是 Homebrew 的扩展软件仓库。
默认情况下,Homebrew 只知道官方维护的软件仓库 homebrew/core 和 homebrew/cask,里面包含大量常用软件(git、python、node、wget 等)。
但不是所有软件都会进入官方仓库。一些公司、组织或个人会维护自己的 Homebrew 仓库,这些额外仓库就是 Tap。
例如 Hashicorp 维护的 hashicorp/tap 包含 terraform、vault、packer、consul 等。
Tap 的本质
可以把 Tap 理解为给 Homebrew 增加一个额外的软件目录。
默认状态下 Homebrew 只有 homebrew/core。执行 brew tap hashicorp/tap 之后,Homebrew 就知道除了官方仓库,还可以去 Hashicorp 的仓库寻找软件。
为什么某些软件需要 tap?
因为这些软件没有放在 Homebrew 官方仓库里。
brew install terraform # 官方仓库没有 → 失败Hashicorp 提供了自己的仓库 hashicorp/homebrew-tap,所以需要先 brew tap hashicorp/tap,然后再安装。
brew tap hashicorp/tap
brew install terraform
# 或直接指定来源
brew install hashicorp/tap/terraformTap 不是切换源
这是最容易误解的地方。Tap 不是更换 Homebrew 镜像、切换软件源或替换官方仓库——只是添加一个新的软件仓库,扩展 Homebrew 可搜索的软件范围。
执行 brew tap oven-sh/bun 后,原来的 brew install git 依然来自 homebrew/core,不会受影响。
常用操作
查看当前有哪些 Tap:
brew tap添加 Tap:
brew tap 用户名/仓库名安装 Tap 中的软件,可以指定 Tap 路径,也可以直接安装让 Homebrew 搜索所有已添加的 Tap:
brew install hashicorp/tap/terraform
brew install terraform # Homebrew 搜索已添加的 Tap关于 Untap
如果某个 Tap 不再使用、已废弃或软件已迁移,可以删除:
brew untap 用户名/仓库名Untap 不会删除已安装的软件——已安装的 terraform 依然存在,只是后续 brew upgrade 不会再从该 Tap 获取更新。如果以后需要,重新 brew tap 即可恢复。
查看某个软件来自哪个 Tap:
brew info 软件名Tap 与软件源的区别
| 对比 | Tap | 软件源 |
|---|---|---|
| 本质 | 软件仓库 | 下载服务器 |
| 作用 | 增加软件目录 | 提供软件包 |
| 是否替换默认 | 否 | 可能 |
| 是否影响已有软件 | 否 | 可能 |
| 是否永久存在 | 是 | 根据配置 |
| 是否可以删除 | brew untap | 根据工具 |
日常使用建议
保持官方 Tap(homebrew/core、homebrew/cask)不要删除。
官方文档要求 tap 时直接执行即可,不用担心。安装后不需要立即 untap,保留即可——未来 brew upgrade 可能需要该 Tap 更新软件。
定期 brew tap 查看,如果发现有已废弃或不再使用的,再 brew untap。
总结
Homebrew Tap 就是给 Homebrew 添加额外的软件仓库,让 Homebrew 能安装官方仓库之外的软件。
核心命令:
brew tap # 查看
brew tap user/repo # 添加
brew untap user/repo # 删除
brew info package # 查看来源- Tap ≠ 软件源切换
- Tap 不需要安装后恢复
- Untap 不会删除已安装软件
- 大多数情况下,让 Tap 保留即可