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

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

- URL: https://moreroom.app/zh-Hans/learn/homebrew-cleanup
- Published: 2026-10-17
- Updated: 2026-10-17
- Publisher: MoreRoom (Yando Pte. Ltd.) — https://moreroom.app

## TL;DR

- 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 共用的文件。

Homebrew 会保留你升级过的软件的旧版本，以及它下载内容的缓存，所以会慢慢变大。**`brew cleanup` 会移除旧版本和超过 120 天的下载文件；`brew cleanup --prune=all` 会完全清空下载缓存；`brew autoremove` 会卸载已不再被任何软件需要的依赖**。这三条都是官方命令，都不会碰到你正在使用的任何软件的当前版本。

下文的命令和默认值均以截至 2026 年 10 月的 [Homebrew 手册](https://docs.brew.sh/Manpage)（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 分别对应哪些清理命令](https://moreroom.app/learn/img/homebrew-cleanup-anatomy.svg)

## 清理前先测量

```sh
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：移除什么，保留什么

```sh
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 进一步清理

```sh
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 后，它带进来的库可能会留下来。

```sh
brew autoremove -n
brew autoremove
```

`brew autoremove` 会卸载那些仅作为依赖安装、且已不再被任何软件需要的 formula。`-n` 版本会先显示列表。

## 卸载不再使用的软件

```sh
brew leaves --installed-on-request
brew uninstall <formula>
```

`brew leaves` 会列出没有其他软件依赖的 formula，`--installed-on-request`（`-r`）则把列表限定为你自己安装的那些。这通常是最短、最值得检查的列表。卸载 formula 会把它从 Cellar 中彻底移除；重新安装时会再次下载。

### Cask 与 --zap

```sh
brew uninstall --cask <cask>
brew uninstall --zap <cask>
```

普通卸载只移除 App。`--zap` 还会移除 cask 定义中列为属于该 App 的文件，例如 `~/Library` 中的偏好设置、缓存和支持文件夹。Homebrew 手册提醒，它**可能会移除多个应用之间共用的文件**，所以请只对确定要连同设置一起移除的 App 使用。对于不是用 Homebrew 安装的 App，请参阅[如何彻底卸载 Mac App](https://moreroom.app/learn/uninstall-mac-apps-completely)。

### 卸载之前，先检查依赖关系

```sh
brew uses --installed <formula>
```

这条命令会列出需要你即将移除的 formula 的已安装 formula 和 cask。如果列表不为空，Homebrew 会拒绝卸载，除非你加上 `--ignore-dependencies`，而这可能会破坏那些软件包。通常更好的做法是不去动共享库，等到没有软件再需要它们时，让 `brew autoremove` 收走。

## 为什么清理后 Homebrew 依然很大

清理移除的是残留内容，而不是你正在使用的软件包。工具链、编译器和大型框架本身就很大，每一个都可能带进几十个依赖。如果 Cellar 依然很大，上文的第三条 `du` 命令会显示哪些 formula 占了大头。卸载不再需要的，然后运行 `brew autoremove`，让它们的依赖也一并离开。

## 检查结果

```sh
brew doctor
```

`brew doctor` 会检查你的安装是否存在潜在问题，发现问题时会以错误状态退出。大多数警告只是提示信息，但在清理之后或迁移到新 Mac 之后，把它作为最后一步很合适。

## MoreRoom 能帮你做什么

MoreRoom 免费版能识别 Homebrew 的下载缓存和 Cellar，并显示它们的大小。下载缓存标注为“可安全移除”，Cellar 标注为“请先检查”。当你清理其中任何一项时，MoreRoom 会运行 Homebrew 自己的 `brew cleanup --prune=all`，它会移除旧版本和缓存的下载文件，但绝不会移除你正在使用的软件包。这条命令是永久性的，并会明确标注。MoreRoom 不会替你卸载 formula 或 cask；这些请用 `brew uninstall` 完成。

Pro 还提供“收集器”（一次清理多个项目）和目标模式（根据你需要的空间挑选最安全的组合）。

## FAQ

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