开发者

Homebrew 清理:如何释放 brew 在 Mac 上占用的空间

brew cleanup 会移除和保留什么,如何清除下载缓存、移除孤立依赖和旧版本,以及如何测量 Homebrew 占用的空间。

阅读约需 6 分钟MoreRoom 团队,Yando Pte. Ltd.以 Markdown 格式查看本页

要点速览

  • 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

  1. 测量 Homebrew 占用的空间. 运行 du -sh "$(brew --cache)" 查看下载缓存,运行 du -sh "$(brew --cellar)" 查看已安装的 formula。
  2. 预览清理内容. 运行 brew cleanup -n,列出将被移除的内容和能释放的空间,不会删除任何东西。
  3. 执行清理. 运行 brew cleanup 移除旧版本和旧下载文件,或运行 brew cleanup --prune=all 完全清空下载缓存。
  4. 移除孤立依赖. 先运行 brew autoremove -n 预览,再运行 brew autoremove,卸载其他 formula 都不需要的依赖。
  5. 卸载不再使用的软件. 运行 brew leaves --installed-on-request 查看你自己安装的内容,再用 brew uninstall 卸载不再需要的。
  6. 检查是否有问题. 清理完成后,运行 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 中。

示意图:Homebrew 的下载缓存、Cellar 和 cask 分别对应哪些清理命令

清理前先测量

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 可以查看你的位置。

本指南提到的文件夹