要点速览
- brew cleanup 默认会移除已安装 formula 的旧版本、过期的锁文件,以及超过 120 天的下载文件。
- brew cleanup --prune=all 还会移除所有缓存的下载文件,无论新旧;请先运行 brew cleanup -n 预览。
- brew autoremove 会卸载已安装的 formula 都不再需要的依赖。
- Homebrew 在 Apple silicon 上位于 /opt/homebrew,在 Intel Mac 上位于 /usr/local;下载缓存位于 ~/Library/Caches/Homebrew。
- brew uninstall --zap 会移除 cask App 及其设置和支持文件,其中可能包括与其他 App 共用的文件。
如何在 Mac 上清理 Homebrew
- 测量 Homebrew 占用的空间. 运行 du -sh "$(brew --cache)" 查看下载缓存,运行 du -sh "$(brew --cellar)" 查看已安装的 formula。
- 预览清理内容. 运行 brew cleanup -n,列出将被移除的内容和能释放的空间,不会删除任何东西。
- 执行清理. 运行 brew cleanup 移除旧版本和旧下载文件,或运行 brew cleanup --prune=all 完全清空下载缓存。
- 移除孤立依赖. 先运行 brew autoremove -n 预览,再运行 brew autoremove,卸载其他 formula 都不需要的依赖。
- 卸载不再使用的软件. 运行 brew leaves --installed-on-request 查看你自己安装的内容,再用 brew uninstall 卸载不再需要的。
- 检查是否有问题. 清理完成后,运行 brew doctor 确认安装状态正常。
Homebrew 会保留你升级过的软件的旧版本,以及它下载内容的缓存,所以会慢慢变大。brew cleanup 会移除旧版本和超过 120 天的下载文件;brew cleanup --prune=all 会完全清空下载缓存;brew autoremove 会卸载已不再被任何软件需要的依赖。这三条都是官方命令,都不会碰到你正在使用的任何软件的当前版本。
下文的命令和默认值均以截至 2026 年 10 月的 Homebrew 手册(Homebrew 7)为准。
Homebrew 把文件存在哪里
| 内容 | Apple silicon | Intel |
|---|---|---|
前缀(brew --prefix) |
/opt/homebrew |
/usr/local |
已安装的 formula(brew --cellar) |
/opt/homebrew/Cellar |
/usr/local/Cellar |
Cask(brew --caskroom) |
/opt/homebrew/Caskroom |
/usr/local/Caskroom |
下载缓存(brew --cache) |
~/Library/Caches/Homebrew |
~/Library/Caches/Homebrew |
macOS 27 Golden Gate 只能在 Apple silicon 上运行,所以新安装都使用 /opt/homebrew。停留在 macOS 26 Tahoe 或更早版本的 Intel Mac 会继续使用 /usr/local。从 Intel 机型迁移过来的 Mac 可能两者都有;brew --prefix 会告诉你当前使用的是哪一个。
Cask App 本身和其他 App 一样,安装在 /Applications 中。
清理前先测量
du -sh "$(brew --cache)"
du -sh "$(brew --cellar)"
du -sh "$(brew --cellar)"/* | sort -h | tail -20
前两行分别显示下载缓存和所有已安装 formula 的大小。第三行列出最大的 20 个 formula。Cellar 中的每个文件夹都为每个已安装版本保留一个子文件夹,所以 brew list --versions 可以显示哪些 formula 装了不止一个版本。
brew cleanup:移除什么,保留什么
brew cleanup -n
brew cleanup
brew cleanup -n(或 --dry-run)会列出将要移除的每个文件,最后给出可释放空间的估算值。不会删除任何内容。随后,不带参数的 brew cleanup 会:
- 移除已安装 formula 的旧版本,保留当前版本;
- 移除 formula 和 cask 的过期锁文件和过时的下载文件;
- 移除所有超过 120 天的下载文件。这个天数可以用
HOMEBREW_CLEANUP_MAX_AGE_DAYS更改。
默认情况下,它还会移除不再需要的依赖,效果与 brew autoremove 相同,除非你设置了 HOMEBREW_NO_AUTOREMOVE。
如果只想清理某一个 formula 或 cask,指定它的名称即可:brew cleanup node。
用 –prune 进一步清理
brew cleanup --prune=all
--prune 接受一个天数,移除比它更旧的所有缓存文件;--prune=all 则无论新旧全部移除。-s(--scrub)还会移除最新版本的下载文件,但仍会保留当前已安装的 formula 和 cask 的下载文件。Homebrew 自己的帮助指出,rm -rf "$(brew --cache)" 连这些也会一并移除。缓存中只有下载文件,所以以上任何一种做法都是安全的;Homebrew 会重新下载它需要的内容。
所有这些删除都是永久性的:不会经过废纸篓。
自动清理
Homebrew 本身已经会在一定程度上自行清理。在 brew install、brew upgrade 和 brew reinstall 之后,它会为涉及的 formula 执行一次清理,并且每 30 天(HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS)对所有内容执行一次。如果你在 shell 配置文件中设置了 HOMEBREW_NO_INSTALL_CLEANUP,这些都不会发生,这也解释了为什么 Cellar 里堆满了旧版本。请移除这个变量,或者不时自己运行 brew cleanup。如果想保护特定的 formula,请把它们列在 HOMEBREW_NO_CLEANUP_FORMULAE 中。
移除没有任何软件需要的依赖
卸载某个 formula 后,它带进来的库可能会留下来。
brew autoremove -n
brew autoremove
brew autoremove 会卸载那些仅作为依赖安装、且已不再被任何软件需要的 formula。-n 版本会先显示列表。
卸载不再使用的软件
brew leaves --installed-on-request
brew uninstall <formula>
brew leaves 会列出没有其他软件依赖的 formula,--installed-on-request(-r)则把列表限定为你自己安装的那些。这通常是最短、最值得检查的列表。卸载 formula 会把它从 Cellar 中彻底移除;重新安装时会再次下载。
Cask 与 –zap
brew uninstall --cask <cask>
brew uninstall --zap <cask>
普通卸载只移除 App。--zap 还会移除 cask 定义中列为属于该 App 的文件,例如 ~/Library 中的偏好设置、缓存和支持文件夹。Homebrew 手册提醒,它可能会移除多个应用之间共用的文件,所以请只对确定要连同设置一起移除的 App 使用。对于不是用 Homebrew 安装的 App,请参阅如何彻底卸载 Mac App。
卸载之前,先检查依赖关系
brew uses --installed <formula>
这条命令会列出需要你即将移除的 formula 的已安装 formula 和 cask。如果列表不为空,Homebrew 会拒绝卸载,除非你加上 --ignore-dependencies,而这可能会破坏那些软件包。通常更好的做法是不去动共享库,等到没有软件再需要它们时,让 brew autoremove 收走。
为什么清理后 Homebrew 依然很大
清理移除的是残留内容,而不是你正在使用的软件包。工具链、编译器和大型框架本身就很大,每一个都可能带进几十个依赖。如果 Cellar 依然很大,上文的第三条 du 命令会显示哪些 formula 占了大头。卸载不再需要的,然后运行 brew autoremove,让它们的依赖也一并离开。
检查结果
brew doctor
brew doctor 会检查你的安装是否存在潜在问题,发现问题时会以错误状态退出。大多数警告只是提示信息,但在清理之后或迁移到新 Mac 之后,把它作为最后一步很合适。
MoreRoom 能帮你做什么
MoreRoom 免费版能识别 Homebrew 的下载缓存和 Cellar,并显示它们的大小。下载缓存标注为“可安全移除”,Cellar 标注为“请先检查”。当你清理其中任何一项时,MoreRoom 会运行 Homebrew 自己的 brew cleanup --prune=all,它会移除旧版本和缓存的下载文件,但绝不会移除你正在使用的软件包。这条命令是永久性的,并会明确标注。MoreRoom 不会替你卸载 formula 或 cask;这些请用 brew uninstall 完成。
Pro 还提供“收集器”(一次清理多个项目)和目标模式(根据你需要的空间挑选最安全的组合)。
常见问题
brew cleanup 安全吗?
安全。它只会移除已有新版本的 formula 的旧版本、过期的锁文件和旧的缓存下载文件。你安装的所有软件的当前版本都会原样保留,继续正常工作。
Homebrew 会自动清理吗?
部分会。在 brew install、upgrade 或 reinstall 之后,它会清理涉及的 formula,并且每 30 天执行一次完整清理。设置 HOMEBREW_NO_INSTALL_CLEANUP 会关闭这一行为。
可以删除 ~/Library/Caches/Homebrew 吗?
可以。它只保存下载文件,需要时 Homebrew 会重新获取。brew cleanup --prune=all 是比较整洁的做法;Homebrew 自己的帮助中提到,用 rm -rf "$(brew --cache)" 连已安装软件包的下载文件也会一并删除。
brew autoremove 和 brew cleanup 有什么区别?
brew cleanup 移除的是你仍在使用的软件的旧版本和缓存下载文件。brew autoremove 则会卸载整个 formula:那些仅作为依赖安装、且已不再被任何软件需要的 formula。
Homebrew 安装在我 Mac 的哪里?
在搭载 Apple silicon 的 Mac 上位于 /opt/homebrew,在 Intel Mac 上位于 /usr/local。运行 brew --prefix 可以查看你的位置。