# 卸载 Homebrew 前，先把已装清单导出来

> 官方脚本会连 Cellar 与 Caskroom 一并清掉，先导出清单，并保存脚本最后提示未能删除的路径

Published: 2026-08-04 | Updated: 2026-08-08

Homebrew 自带官方卸载脚本，行为与说明一致，真正要留意的是它的范围：Homebrew 本身和经它装上的一切会一起走，这两件事的分量因你来这里的目的而不同。

若是为了腾磁盘，这往往是开发者 Mac 上单次回收空间最大的一刀，若只是某一个命令行软件包出了问题，这就远超你需要的操作。

## 官方卸载脚本

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
```

运行前先读一遍，脚本很短，却是即将发生之事的权威说明，任何文章都代替不了，它支持 `--dry-run`，在你在意的机器上，这应是第一次调用的正确方式，只打印将删除的内容，不做任何改动。

## 脚本实际会删掉什么

卸载器会移除 Homebrew 安装前缀及其下的目录：`bin`、`etc`、`include`、`lib`、`opt`、`sbin`、`share`、`var`、`Frameworks`，以及 `Cellar` 与 `Caskroom`。

后两者才是关键，Cellar 存放每个命令行软件包的文件，Caskroom 存放图形应用包的元数据，卸掉 Homebrew 等于一并卸掉它们，经它安装的命令行工具会同时消失。

它还会清理 `~/Library/Caches/Homebrew` 与 `~/Library/Logs/Homebrew`、系统级 Homebrew 缓存、`/etc/paths.d/homebrew`，以及 `/Applications` 与 `~/Applications` 里由 Homebrew 管理的应用程序。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/homebrew-uninstall-scope.webp" width="1360" height="454" loading="lazy" alt="卸载脚本会移除包含 Cellar 与 Caskroom 在内的 Homebrew 安装前缀，以及缓存与日志；各软件包自行写入的配置与 shell 配置文件中的行会保留。">
  <figcaption>脚本带走的是软件包本身，不只是包管理器。留下的是那些软件写入的配置，以及你自己加进 shell 配置文件的行。</figcaption>
</figure>

## 动手前先记下已装了什么

清单卸完后无法找回，导出只需两条命令：

```
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
```

`brew leaves` 列出的是你主动安装的命令行软件包，不含背后拉进来的依赖，重建时要的就是这份列表，换到新机器上，这两个文件能把一天的回忆变成一行 `brew install`。

软件包存放在自身目录之外的内容会留下来，值得保留的有 Postgres 数据目录、`/opt/homebrew/var` 下的本地数据库和家目录里的配置，卸载器会删掉前缀下的 `var`，住在那里的数据库会一并消失，若它重要，先拷出来。

## 结尾那行容易被滑过去的提示

脚本结束时可能打印：部分可能属于 Homebrew 的文件未能删除，你可以自行处理，并附上路径列表。

这些路径只在这里被点名，常见原因是权限落在 Homebrew 未创建的目录上，列表通常很短，关掉终端前先复制保存，因为在已经卸干净的机器上再跑一次卸载器，不会再给出这份列表。

## shell 配置文件里还记着它

卸载器不会改 `.zprofile`、`.zshrc` 或 `.bash_profile`，安装时加入的 `eval "$(/opt/homebrew/bin/brew shellenv)"` 仍会留下，之后每个新 shell 都会去跑一个已经不存在的程序，无害，但吵，删掉这行，或者打算重装就先留着。

## 先想清楚要不要做这么大的操作

多数卸载 Homebrew 的理由，用更窄的操作就够了，`brew cleanup` 回收旧版本与缓存下载，`brew uninstall <formula>` 只卸掉一个软件包，`brew autoremove` 清掉已无消费者的依赖，无论跑哪条，[Mole](https://mole.fit/zh/) 都会显示安装前缀在操作前后各占多少空间，这个数字能帮你判断是否真的需要整库卸掉。

## 用导出的清单重建

新机器上装好 Homebrew 之后，两条命令就能把之前那套装回来，分开两条是因为 cask 要带 `--cask`，混在一起会有一半装不上：

```
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
```

用 `brew leaves` 而不是 `brew list`，区别在这里才体现出来：`brew list` 会把依赖也列进去，照着装一遍会显式安装几百个本该由依赖关系自动带上的包，之后 `brew autoremove` 也不敢清它们了，因为它们变成了你主动要的，而 `brew leaves` 只给你当初真正 install 过的那些，依赖交给 Homebrew 自己解。

---

Canonical HTML page: https://mole.fit/zh/blog/how-to-uninstall-homebrew-mac
Blog index for agents: https://mole.fit/zh/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
