简介
Homebrew 是 macOS 上最流行的包管理器,用于安装和管理命令行工具及应用程序。
- brew 会把软件安装在用户主目录里,不需要 sudo
- brew(formula)装的主要是命令行工具
- brew cask 装的大多是有 GUI 界面的 app 以及驱动
Formula 与 Cask 的区别
两者的本质区别是安装方式,不是有没有 GUI:
- formula:需要从源码编译或解压二进制的工具,brew 完全管理其生命周期
- cask:处理
.dmg、.pkg、.zip(含.app)这类"分发包",安装时需要复制到/Applications、注册 UTI、处理系统权限等,安装/卸载逻辑与 formula 完全不同
两套安装逻辑分开,互不干扰,也便于用户区分"这是个 CLI 工具"还是"这是个桌面 App"。
实际使用中的经验规律:
| 类型 | 典型情况 | 例外 |
|---|---|---|
formula(不加 --cask) |
命令行工具、库 | 极少数带 GUI |
cask(--cask) |
GUI 桌面 App | google-cloud-sdk、android-platform-tools 等纯 CLI |
官方说法是:cask 用于安装"macOS native apps and large binaries",重点是分发形式(预编译的大型安装包),而不是有没有界面。
Homebrew 术语表(酿酒比喻)
Homebrew 整个项目名叫"家酿啤酒",术语全部来自酿酒场景:
| 术语 | 酿酒含义 | 对应概念 |
|---|---|---|
| formula | 配方 | 软件的安装脚本 |
| keg | 酒桶 | 安装后的目录(/usr/local/Cellar/<pkg>) |
| cellar | 酒窖 | 所有已安装包的存放处 |
| tap | 水龙头(接上一个新酒桶) | 接入一个新的软件仓库 |
| cask | 大木桶(装整瓶酒) | 完整的 macOS App |
| bottle | 预先装好的瓶子 | 预编译的二进制包 |
安装与卸载 brew
# 安装
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 卸载
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall.sh)"
常用命令
# 搜索
brew search foo
# 安装
brew install ansible
brew install --cask obsidian
# 卸载
brew uninstall packageName
# 列出已安装的包
brew list
# 查看所有需要更新的包
brew outdated
# 更新某一个包
brew upgrade package0
# 更新所有包,相当于 Arch Linux 的 pacman -Syu
# brew upgrade 会自动先执行 brew update 刷新 formula 列表,再升级所有包
brew upgrade
# 配置信息
brew config
# 检查系统问题
brew doctor
不认识的包怎么查
brew upgrade 或 brew outdated 里经常出现一些不认识的包名,多数是别的软件的依赖,被顺带装上。按下面的顺序查:
# One-line description of the package
brew desc harfbuzz
# Details: version, homepage, license, and whether it was installed as a dependency
brew info harfbuzz
# Which installed packages depend on it (who pulled it in)
brew uses --installed harfbuzz
# What a package depends on, as a tree
brew deps --tree openjdk
# Packages you installed explicitly (not dependencies)
brew leaves
# Open the project homepage in the browser
brew home harfbuzz
判断方法:
brew info输出里有Installed (as dependency),说明是依赖,不是主动安装的brew uses --installed <pkg>列出的就是依赖它的软件,这些软件还在,它就不能删- 不在
brew leaves列表里的包,基本都是依赖 - 依赖没人用了,可以用
brew autoremove清理
底层库本身是跨平台的,Linux 上也有,功能介绍和各平台包名对照见 System Libraries。
Tap(第三方仓库)
什么是 tap
brew 默认只包含官方维护的 formula(homebrew/core)和 cask(homebrew/cask)。tap 是第三方维护的额外软件仓库,本质上是一个 GitHub 仓库,遵循 brew 的目录结构约定。
通过 tap,软件作者可以自己发布和维护 brew 安装包,用户不需要等官方收录。
名字来自酿酒比喻:“tap”(水龙头)的语义是把一个新的啤酒桶"接上"(tap into)系统,之后就能从里面"倒出"软件来。
tap 命令
# 添加一个 tap
brew tap <user>/<repo>
# 列出已添加的 tap
brew tap
# 移除 tap
brew untap <user>/<repo>
# 直接从 tap 安装(会自动 tap)
brew install --cask <user>/<tap>/<cask>
示例:通过 tap 安装 netbird-ui
netbird 没有进入 homebrew 官方仓库,官方维护了自己的 tap netbirdio/tap:
# 方式一:先 tap,再安装
brew tap netbirdio/tap
brew install --cask netbird-ui
# 方式二:直接指定完整路径(推荐,自动 tap)
brew install --cask netbirdio/tap/netbird-ui
背景:netbird 原本通过官网 .pkg 安装包安装。迁移到 brew 管理后,可以通过 brew upgrade --cask netbird-ui 统一升级,不再需要手动下载安装包。/var/lib/netbird/ 中的配置文件(私钥、管理服务器地址)在迁移过程中完整保留,连接配置不受影响。
升级 netbird
brew upgrade --cask netbird-ui
换国内源(网络慢时)
# 步骤一:更换 brew 主仓库
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
# 步骤二:更换 homebrew-core
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
# 步骤三
brew update
恢复默认源
cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core
brew update
所有 cask 包
https://formulae.brew.sh/cask/
维护记录
| 时间 | 修改内容 | 原因 |
|---|---|---|
| 2026-06-19 | 补充 brew upgrade 与 pacman -Syu 等价说明及自动 update 细节 |
对比 Arch Linux 用法,便于理解 |
| 2026-09-22 | 新增「不认识的包怎么查」一节,链接到 System Libraries | 升级时遇到不认识的依赖包(harfbuzz),需要查询方法 |