brew cleanup 是安全清理 Homebrew 旧版本包与缓存的核心命令:1. 基础清理删除非激活旧版及30天以上缓存;2. -n 预览待删内容;3. 定向清理指定公式旧版;4. --prune=all 强制清除全部冗余缓存与孤立依赖;5. 手动 rm -rf $(brew --cache) 补漏。

Mac上Homebrew长期使用后,【/opt/homebrew/cache(Apple Silicon)或/usr/local/Homebrew/cache(Intel)】目录会堆积大量旧版软件包归档(.tar.gz)、构建中间产物和未安装的下载缓存,动辄占用5–15 GB空间,导致磁盘告急、升级变慢甚至brew命令卡顿。
基础清理:安全释放常规空间
这一步只删已安装软件的非激活旧版本 + 超过30天的缓存,不碰当前正在用的任何东西,适合每月执行一次。
打开终端,直接运行:brew cleanup
命令结束后终端会逐行打印被删除的路径(如/opt/homebrew/Cellar/python@3.11/3.11.9)并显示释放总量,比如12.4GB reclaimed——这个数字就是你马上能拿回来的真实空间。
预览再动手:避免误删关键旧版
如果你依赖某个历史版本做兼容测试(比如必须用node@18跑老项目),又不确定它是否会被清掉,先模拟运行最稳妥。
在终端输入:brew cleanup -n
终端立刻列出所有待删项,包括完整路径和文件名。仔细扫一眼输出里有没有你打算保留的版本,比如/opt/homebrew/Cellar/node@18/18.20.3——如果出现了,别急着执行正式清理,先用brew pin node@18加锁,再运行brew cleanup就跳过它了。
定向清理:只动占空间的大户
有时候空间压力来自某一个公式,比如ffmpeg或rust,它们的旧版包每个都几百MB,而其他软件很干净。这时候全局清理纯属浪费时间。
方法一:确认名字后精准打击
先查它装了没:brew list | grep -i ffmpeg
再只清它的旧版:brew cleanup ffmpeg
方法二:多个一起清也行
比如你刚卸载了python@3.11和node@20,但旧版还留着:brew cleanup python@3.11 node@20
深度清理:应对磁盘告急或架构迁移
当剩余空间低于5 GB,或者你刚从Intel Mac换到M1/M2/M3,缓存目录里很可能混着大量x86_64架构的残留tarball——这些文件完全没法用,却死占着空间。
第一步:执行强制扫描与清除brew cleanup --prune=all
第二步:它会自动触发brew autoremove(Homebrew 4.0+),把那些没被任何现存formula引用的孤立依赖也一并移除。这步常额外释放3–8 GB,尤其对长期未清理的Apple Silicon机器效果明显。
注意:【此操作不可逆,且会清掉所有未被引用的缓存,包括不到30天但已冗余的】,执行前建议先跑一遍brew cleanup -n看看范围。
手动补漏:解决权限异常或损坏缓存
极少数情况下,brew cleanup会跳过某些损坏链接或权限不足的文件,比如提示Permission denied或Operation not permitted。
先确认当前缓存路径:brew --cache
通常返回/opt/homebrew/cache或/usr/local/Homebrew/cache,核对无误后执行:rm -rf $(brew --cache)
如果提示权限错误,且你确认路径属于系统级缓存(比如Intel机器上的/usr/local/Homebrew/cache),再加sudo:sudo rm -rf $(brew --cache)

















