AskCleanAskClean问净

如何清理 Mac 上的 Homebrew 缓存与旧版本

AskClean 团队 · 更新于 2026-08-05

先用 brew --cache 找到 Homebrew 下载缓存,再运行 brew cleanup -n 查看将被移除的下载、过期锁文件与旧版 formula。普通 brew cleanup 按 Homebrew 的保留规则处理这些项目;brew cleanup --prune=all 会不论年龄清理缓存文件。当前安装、配置和项目数据不属于下载缓存,不能手动扫掉。

瓶装软件包整齐摆在发光货架上,旧软件包被收进左下方的回收容器
Homebrew 各类数据的恢复成本不同:下载与旧版本先预览,当前工具和配置要保护。

Homebrew 的数据不只存放在一个缓存目录中

下载缓存通常位于 ~/Library/Caches/Homebrew,但 HOMEBREW_CACHE 可以覆盖它,应以 brew --cache 为准。formula 的版本化 keg 位于 Cellar,cask 记录位于 Caskroom,当前工具由 Homebrew prefix 下的链接使用;用 brew --cellar、brew --caskroom 和 brew --prefix 查找,不能把这些安装位置当缓存删除。

先做只读审计

运行 du -sh "$(brew --cache)" 测量真实缓存,再用 brew cleanup -n 预览过期下载、过期锁文件和旧版 formula。看到熟悉工具时,用 brew list --versions 核对当前与旧版本。预览 --prune=all 时应运行 brew cleanup -n --prune=all,因为旧 keg 的回滚成本高于重新下载一份 bottle。

  1. 运行 brew --cache,并用 du -sh "$(brew --cache)" 记录活动下载缓存的体积。
  2. 运行 brew cleanup -n,逐项检查过期下载、过期锁文件和旧版 formula;必要时用 brew list --versions 核对。
  3. 根据预览选择普通 brew cleanup;只有接受全部重新下载成本时,才先预览并运行 brew cleanup --prune=all。
  4. 若只处理一个 formula 或 cask,先运行 brew cleanup -n <name>,确认后再运行 brew cleanup <name>。
  5. 再次运行 brew cleanup -n、测量缓存、核对已安装版本,并启动当前工作依赖的重要 Homebrew 工具。

dry run 只是预览,不是备份。Homebrew 删除的旧 keg 或下载通常不会进入 macOS 废纸篓,也不保证上游仍能提供完全相同的版本。

按需要选择普通或彻底清理

审核通过后,brew cleanup 是保守的常规维护;当前默认会把超过 120 天的下载纳入候选,并可能删除旧版 formula。brew cleanup --prune=all 会不论年龄清理缓存,下一次安装或重装需要重新下载。全局范围太大时,先运行 brew cleanup -n <name>,再按同一名称定点执行;尖括号只是占位符。

保护当前工具、配置和用户数据

不要对 brew --prefix、brew --cellar、brew --caskroom 或整个 ~/Library/Caches 运行宽泛的 rm -rf。Brewfile、shell 配置、Homebrew 服务、数据库、证书和项目文件也不是缓存。brew autoremove --dry-run 只预览不再需要的依赖;真正运行 brew autoremove 会卸载软件,必须作为独立决策。清理后再次 dry-run、测量缓存、核对 brew list --versions 并测试关键命令。

清理边界与恢复成本

先预览,再用 brew cleanup 安全清理 Homebrew 下载与旧版 formula,同时保护当前安装、依赖和配置。

项目或操作检查位置删除后果
Homebrew 的数据不只存放在一个缓存目录中brew --cache下载缓存通常位于 ~/Library/Caches/Homebrew,但 HOMEBREW_CACHE 可以覆盖它,应以 brew --cache 为准。formula 的版本化 keg 位于 Cellar,cask 记录位于 Caskroom,当前工具由 Homebrew prefix 下的链接使用;用 brew --cellar、brew --caskroom 和 brew --prefix 查找,不能把这些安装位置当缓存删除。
先做只读审计brew cleanup -n运行 du -sh "$(brew --cache)" 测量真实缓存,再用 brew cleanup -n 预览过期下载、过期锁文件和旧版 formula。看到熟悉工具时,用 brew list --versions 核对当前与旧版本。预览 --prune=all 时应运行 brew cleanup -n --prune=all,因为旧 keg 的回滚成本高于重新下载一份 bottle。
按需要选择普通或彻底清理brew cleanup / brew cleanup --prune=all审核通过后,brew cleanup 是保守的常规维护;当前默认会把超过 120 天的下载纳入候选,并可能删除旧版 formula。brew cleanup --prune=all 会不论年龄清理缓存,下一次安装或重装需要重新下载。全局范围太大时,先运行 brew cleanup -n <name>,再按同一名称定点执行;尖括号只是占位符。
保护当前工具、配置和用户数据brew autoremove --dry-run (not cache cleanup)不要对 brew --prefix、brew --cellar、brew --caskroom 或整个 ~/Library/Caches 运行宽泛的 rm -rf。Brewfile、shell 配置、Homebrew 服务、数据库、证书和项目文件也不是缓存。brew autoremove --dry-run 只预览不再需要的依赖;真正运行 brew autoremove 会卸载软件,必须作为独立决策。清理后再次 dry-run、测量缓存、核对 brew list --versions 并测试关键命令。

常见问题

brew cleanup 安全吗?

它是受支持的维护命令,但会处理旧版 formula,必须先用 brew cleanup -n 确认没有回滚流程或硬编码路径仍依赖旧 keg。

brew cleanup --prune=all 会删除什么?

它不论年龄清理缓存文件,并保留 cleanup 原有的旧版本处理范围;先运行 brew cleanup -n --prune=all,并接受以后重新下载的成本。

清完后要运行 brew autoremove 吗?

不一定。它不是缓存清理,而是卸载 Homebrew 判断不再需要的依赖;若考虑使用,先单独运行 brew autoremove --dry-run 并核对脚本和服务。

参考来源

继续清理开发者存储