Mac 上装开发工具,很多人第一反应就是 Homebrew。但刚开始用时,容易把几件事混在一起:brew install 是装什么,formula 和 cask 有什么区别,tap 是不是源,brew services 为什么能让 Redis 开机启动,brew cleanup 又会清什么。
这些词理解清楚以后,Homebrew 就不只是“复制一条命令安装软件”,而是能变成一套可维护的本机开发环境管理方式。
这篇整理最常用的一组命令和排障思路,只保留公开、安全、长期可复用的部分。
先用官方安装命令
Homebrew 的安装命令可能会随时间调整,所以不要长期照抄旧教程里的 ruby -e 写法。当前优先看官网首页给出的安装命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
安装脚本会先说明它要做什么,再暂停等待确认。安装完成后,按终端提示把 brew shellenv 写入当前 shell 配置,确保 brew 在 PATH 里。
Apple Silicon Mac 通常在:
/opt/homebrew
Intel Mac 常见在:
/usr/local
不确定时直接查:
brew --prefix
brew --cellar
brew --caskroom
不要在脚本里写死 /usr/local。迁移到 Apple Silicon 以后,这类硬编码路径最容易出问题。
formula 和 cask 分别装什么
Homebrew 里最常见的两类包是 formula 和 cask。
可以先这样理解:
| 类型 | 适合安装 | 例子 |
| — | — | — |
| formula | 命令行工具、库、服务 | git、redis、ffmpeg |
| cask | 图形化应用、字体、插件 | firefox、visual-studio-code、字体包 |
命令行工具通常直接:
brew install wget
brew install redis
图形化应用通常:
brew install --cask firefox
brew install --cask visual-studio-code
如果不确定包名,先搜索:
brew search redis
brew search --cask firefox
再看详细信息:
brew info redis
brew info --cask firefox
brew info 很有用,它会告诉你版本、依赖、安装路径、服务启动提示和注意事项。
tap 是额外的软件仓库
tap 可以理解成额外的软件仓库。官方维护的核心仓库之外,其他人也可以维护自己的 formula 或 cask。
查看当前 tap:
brew tap
添加一个 tap:
brew tap owner/repo
移除一个 tap:
brew untap owner/repo
排障时如果遇到某个 tap 拉取失败、仓库改名、GitHub 用户名变了,可以先 brew tap 看当前列表,再按提示 brew untap 掉异常 tap,然后重新 brew update。
这里要谨慎一点:tap 本质上会让你从第三方仓库安装软件。非官方 tap 最好先看项目来源、维护状态和安装脚本,不要看见命令就直接粘贴。
update、outdated、upgrade、cleanup 是一组
日常升级可以按这条线走:
brew update
brew outdated
brew upgrade
brew cleanup
它们分别做不同事情:
brew update:更新 Homebrew 自身和软件索引。brew outdated:列出已经安装、但有新版本的软件。brew upgrade:升级可升级的软件。brew cleanup:清理旧版本和缓存。
如果只想看某个包:
brew outdated redis
brew upgrade redis
如果升级后某个工具异常,可以先看:
brew info redis
brew doctor
brew doctor 会检查潜在问题。它的输出有时很多,不代表系统一定坏了;如果当前工具都能正常用,可以先关注和当前问题直接相关的 warning。
brew services 管后台服务
像 Redis、PostgreSQL、RabbitMQ 这类本地服务,可以手动运行,也可以交给 brew services 管。
启动并注册为登录后自动运行:
brew services start redis
停止并取消自动运行:
brew services stop redis
重启:
brew services restart redis
查看状态:
brew services list
brew services info redis
临时运行、不注册开机或登录启动,可以用:
brew services run redis
这个区别很重要:start 会注册服务,run 更像临时启动。只是临时调试时,不一定要把服务长期挂起来。
如果服务状态乱了,可以先停止再启动:
brew services stop redis
brew services start redis
还有一个清理命令:
brew services cleanup
它用于移除不用的服务配置。执行前最好先看当前 brew services list,确认没有误会。
常用查询命令放一起
这些命令适合日常查环境:
brew --version
brew config
brew doctor
brew list
brew list --cask
brew info <name>
brew deps <name>
brew uses <name>
含义大致是:
brew config:看 Homebrew、Ruby、系统、CPU 架构等信息。brew list:列出已安装 formula。brew list --cask:列出已安装 cask。brew deps:看一个包依赖谁。brew uses:看哪些包依赖它。
排障时不要一上来重装。先看 brew info、brew config、brew doctor,通常能定位到路径、依赖或服务状态问题。
换源和代理不要混着乱改
Homebrew 慢,常见原因是网络访问 GitHub 或下载源不稳定。解决思路通常有两类:
- 配代理。
- 换镜像源。
这两类不要同时胡乱叠加。代理、镜像、环境变量、Git remote 一起改,短期可能能跑,后续排障会非常痛苦。
更稳的做法是:
- 先确认当前
brew config和brew doctor。 - 再确认是 Git 拉取慢,还是 bottle 下载慢。
- 只改一类变量,改完立刻验证。
- 把改过的环境变量和 remote 记录下来,后续能恢复。
如果你只是临时网络不好,优先用可控的代理环境;如果是长期在固定网络环境里使用,再考虑换镜像。无论哪种方式,都不要把陌生脚本直接写进 shell 配置。
Brewfile 适合迁移机器
如果你经常换机器,或者想把本机开发环境记录下来,可以用 Homebrew Bundle。
导出当前环境:
brew bundle dump --file=Brewfile
在新机器安装:
brew bundle --file=Brewfile
Brewfile 可以描述 formula、cask、tap,甚至部分编辑器扩展。它比手写一堆安装命令更可维护。
但 Brewfile 也要定期清理。不要把一次性试用的软件、私有 tap、敏感工具或早就不用的应用全部带到新机器。
小结
Homebrew 日常可以先记住这几组:
- 安装:
brew install、brew install --cask - 查询:
brew search、brew info、brew list - 升级:
brew update、brew outdated、brew upgrade - 清理:
brew cleanup - 服务:
brew services start/stop/restart/list - 排障:
brew config、brew doctor - 迁移:
brew bundle
真正关键的是理解边界:formula 管命令行工具和服务,cask 管应用,tap 是额外仓库,services 是后台服务管理,cleanup 是清理旧版本和缓存。这样后续装 Redis、RabbitMQ、ffmpeg、编辑器或迁移新 Mac,就不会只剩“复制命令试试看”。
参考链接
- Homebrew 官网:<https://brew.sh/>
- Homebrew 手册:<https://docs.brew.sh/Manpage>
- Homebrew Taps:<https://docs.brew.sh/Taps>




