Homebrew 太慢?试试这个 Rust 版本,速度快 20 倍

早上等 Homebrew 装软件,咖啡都凉了
你有没有过这种经历:早上打开电脑,想装个工具,敲下 brew install xxx,然后就开始等。等下载、等解压、等链接,等到你的咖啡都凉了,软件还在那慢悠悠地装着。
这就像你去超市买东西,明明只买一瓶水,却要排队等前面的人慢慢结账、慢慢装袋、慢慢找零钱。你心里想:能不能快点啊?
现在有个叫 ZeroBrew 的新工具,用 Rust 重写了 Homebrew 的核心逻辑。第一次装软件快 2 倍,重复装的话能快 20 倍。今天咱们就聊聊它为什么这么快,以及怎么安全地试用它。
ZeroBrew 是什么?为什么这么快?
ZeroBrew 就像是 Homebrew 的"涡轮增压版"。它用 Rust 重写了核心逻辑,并且借鉴了 Nix 的设计思路,把软件包管理变成了一件超快的事。
快在哪里?用超市来比喻
想象一下,传统的 Homebrew 就像这样:你去超市买东西,每次都要从货架上拿新的商品,结账时要一个一个扫码,装袋时要慢慢整理。
而 ZeroBrew 是这样的:
超市有个"智能仓库",每个商品都有唯一的编号(SHA-256)。如果你之前买过,直接从仓库拿,不用再去货架找。拿商品时不是真的"拿",而是用魔法"复制"一份,几乎不占空间,速度超快。多个收银台同时工作,不用排队。下载、解压、链接同时进行,不用等一个步骤完成再开始下一个。
技术细节(给爱钻研的朋友)
ZeroBrew 的核心优化点:
软件包存在 /opt/zerobrew/store/{sha256},如果已经存在,重装就是秒级。macOS 的写时复制技术(APFS clonefile),“复制"文件几乎不占磁盘空间,速度极快。多个包同时下载,避免重复请求。下载、解压、链接并发进行,不浪费时间。从 Homebrew 的 CDN 拉取 bottle,并复用它们。
目录结构也很清晰:
/opt/zerobrew/
├─ store/ # 内容寻址存储(SHA-256 键)
│ ├─ Cellar/ # 实际的软件包
│ ├─ bin/ # 可执行文件的符号链接
│ └─ opt/ # 软件包目录的符号链接
├─ cache/ # 下载的 bottle 缓存
├─ db/ # SQLite 数据库
└─ locks/ # 文件锁
实测数据:到底快多少?
作者做了个基准测试:
| 软件包 | Homebrew 时间 | ZeroBrew 时间 | 提速倍数 |
|---|---|---|---|
| jq | 5.2s | 2.1s | 2.5× |
| git | 12.8s | 6.3s | 2.0× |
| wget | 8.4s | 3.9s | 2.2× |
| sqlite | 15.6s | 7.8s | 2.0× |
重复安装更快,因为 ZeroBrew 会直接从 store 里拿,几乎是秒装。
你可以自己跑个测试:
./benchmark.sh # 测试 top-100 包
./benchmark.sh --format html -o results.html # 生成 HTML 报告
./benchmark.sh -c 20 --quick # 快速测试 22 个包
怎么安全地试用?不影响现有的 Homebrew
你可能会担心:我现在用的好好的 Homebrew,万一 ZeroBrew 出问题怎么办?
别慌,ZeroBrew 和 Homebrew 可以和平共处,互不干扰。下面是我推荐的方案。
1. 安装 ZeroBrew
一行命令搞定:
curl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash
安装完后,运行它提示的 export 命令(或者重启终端)。
安全提示:curl | bash 虽然方便,但不透明。如果你担心安全,可以先下载脚本看看,或者从源码编译:
git clone https://github.com/lucasgelfond/zerobrew
cd zerobrew
cargo build --release
cargo install --path zb_cli
2. 试着装几个常用工具
先从几个你熟悉的工具开始:
zb install jq # 装一个
zb install wget git # 装多个
zb uninstall jq # 卸载
zb reset # 卸载所有 ZeroBrew 管理的包
zb gc # 垃圾回收,清理不用的 store 条目
3. 设置智能回退(推荐)
在你的 ~/.zshrc 或 ~/.bashrc 里加上这个:
br() {
if zb "$@" 2>/dev/null; then
return 0
else
echo "[br] zb 处理不了 '$*',自动切换到 brew..."
brew "$@"
fi
}
这样,你就可以用 br install xxx 来装软件。如果 ZeroBrew 支持,就用它(快);如果不支持,自动切换到 Homebrew(稳)。
4. 选择高收益的包
不是所有包都值得用 ZeroBrew 装。优先选这些:jq、git、wget、ripgrep、fd、sqlite 这些常用的开发工具;你在多台机器上都要装的工具;基准测试里表现好的包,比如 node、python、go。
5. 在 CI/CD 里用 ZeroBrew
如果你有 macOS 的 CI 环境,ZeroBrew 的缓存机制能帮你省大量时间:
# GitHub Actions 示例
- name: Cache ZeroBrew store
uses: actions/cache@v3
with:
path: /opt/zerobrew/store
key: zerobrew-${{ hashFiles('**/Brewfile') }}
- name: Install dependencies
run: zb install jq git wget ripgrep fd
定期运行 zb gc 来控制缓存大小。
迁移与恢复:万一出问题怎么办?
先装 5-10 个你熟悉的包,看看效果。确认这些包能正常工作。如果没问题,再扩展到更多包。
如果你不想用了,卸载很简单:
zb reset # 卸载所有 ZeroBrew 管理的包
sudo rm -rf /opt/zerobrew # 删除 ZeroBrew 目录
hash -r # 清除 shell 命令缓存
ZeroBrew 的所有东西都在 /opt/zerobrew 里,删掉就完事了,不会影响 Homebrew。
ZeroBrew 和 Homebrew 都会把可执行文件链接到 /usr/local/bin。如果你想优先用某一个,确保你的 $PATH 里把它放在前面:
# 优先用 ZeroBrew
export PATH="/opt/zerobrew/store/bin:$PATH"
# 或者用上面的 br() 函数,自动回退
目前 ZeroBrew 主要支持核心的命令行工具。GUI 应用(Casks)和非核心 Taps 继续用 Homebrew,核心 CLI 工具用 ZeroBrew。
什么时候应该继续用 Homebrew?
ZeroBrew 虽然快,但不是万能的。以下情况建议继续用 Homebrew:你依赖非核心 Taps 或冷门的 formula;你的工作流深度依赖 Homebrew 内部机制(比如自定义 tap、formula 开发);你需要管理大量 GUI 应用(Casks)。
好消息是,ZeroBrew 和 Homebrew 可以并存,各取所长。
几个实用技巧
ZeroBrew 的 store 会越来越大,定期清理一下:
zb gc # 清理不用的 store 条目
你可以设置个 cron 任务,每周自动清理:
# 每周日凌晨 2 点清理
0 2 * * 0 /usr/local/bin/zb gc
把你常用的工具写成脚本,换机器时一键恢复:
#!/bin/bash
# bootstrap.sh
set -euo pipefail
packages=(jq git wget ripgrep fd sqlite node python go)
zb install "${packages[@]}"
echo "开发环境恢复完成!"
想知道 ZeroBrew 对你的工具栈提速多少?跑个测试:
./benchmark.sh -c 20 --quick
open results.html
常见坑与对策
zb install xxx 报错,说找不到 formula。ZeroBrew 目前主要支持核心 formula,一些冷门的可能还不支持。用上面的 br() 函数,自动回退到 Homebrew。
装完 ZeroBrew 后,某些命令还是用的 Homebrew 版本。$PATH 里 Homebrew 的路径在前面。调整 $PATH,把 ZeroBrew 的路径放前面:
export PATH="/opt/zerobrew/store/bin:$PATH"
/opt/zerobrew/store 越来越大。ZeroBrew 会缓存所有装过的包。定期运行 zb gc 清理。
总结
ZeroBrew 用 Rust 重写了 Homebrew 的核心逻辑,速度快 2-20 倍。和 Homebrew 并存,优先用 ZeroBrew 装常用工具,冷门的继续用 Homebrew。核心技术是内容寻址存储、APFS clonefile、并行下载和流式处理。
下一步
安装 ZeroBrew:curl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash
试装几个常用工具:zb install jq git wget
设置智能回退函数(见上文)
跑个基准测试,看看提速多少
在 CI/CD 里试用,缓存 store 目录
小抄(Cheatsheet)
# 安装 ZeroBrew
curl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash
# 基本操作
zb install jq # 安装
zb uninstall jq # 卸载
zb reset # 卸载所有
zb gc # 垃圾回收
# 智能回退函数(加到 ~/.zshrc)
br() {
if zb "$@" 2>/dev/null; then
return 0
else
echo "[br] zb 处理不了 '$*',自动切换到 brew..."
brew "$@"
fi
}
# 基准测试
./benchmark.sh -c 20 --quick
open results.html
你觉得这篇文章有用吗?
如果你也被 Homebrew 的速度折磨过,或者对 ZeroBrew 感兴趣,不妨试试看。
你平时最常用 Homebrew 装哪些工具?装得最慢的是哪个?欢迎在评论区聊聊。
如果这篇文章对你有帮助,点个赞让更多人看到这个提速神器,或者转发分享给可能需要的朋友。关注梦兽编程,不错过更多实用的开发工具和技巧。
你的支持是我持续创作的最大动力!