找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

926

积分

0

好友

130

主题
发表于 14 小时前 | 查看: 0| 回复: 0

ZeroBrew 是一个用 Rust 写的 Homebrew 替代品,安装软件包快得像闪电。今天我们来聊聊它为什么这么快,以及如何安全地试用它。

早上等 Homebrew 装软件,咖啡都凉了

你有没有过这种经历:早上打开电脑,想装个工具,敲下 brew install xxx,然后就开始等。等下载、等解压、等链接,等到你的咖啡都凉了,软件还在那慢悠悠地装着。

这就像你去超市买东西,明明只买一瓶水,却要排队等前面的人慢慢结账、慢慢装袋、慢慢找零钱。你心里想:能不能快点啊?

现在有个叫 ZeroBrew 的新工具,用 Rust 重写了 Homebrew 的核心逻辑。第一次装软件快 2 倍,重复装的话能快 20 倍。今天咱们就聊聊它为什么这么快,以及怎么安全地试用它。

ZeroBrew 是什么?为什么这么快?

ZeroBrew 就像是 Homebrew 的“涡轮增压版”。它用 Rust 重写了核心逻辑,并且借鉴了 Nix 的设计思路,把软件包管理变成了一件超快的事。

快在哪里?用超市来比喻

想象一下,传统的 Homebrew 就像这样:你去超市买东西,每次都要从货架上拿新的商品,结账时要一个一个扫码,装袋时要慢慢整理。

而 ZeroBrew 是这样的:

  • 超市有个“智能仓库”,每个商品都有唯一的编号(SHA-256)。如果你之前买过,直接从仓库拿,不用再去货架找。
  • 拿商品时不是真的“拿”,而是用魔法“复制”一份,几乎不占空间,速度超快。
  • 多个收银台同时工作,不用排队。
  • 下载、解压、链接同时进行,不用等一个步骤完成再开始下一个。

技术细节(给爱钻研的朋友)

ZeroBrew 的核心优化点:

  • 内容寻址存储:软件包存在 /opt/zerobrew/store/{sha256},如果已经存在,重装就是秒级。
  • APFS clonefile:利用 macOS 的写时复制技术,“复制”文件几乎不占磁盘空间,速度极快。
  • 并行下载:多个包同时下载,避免重复请求。
  • 流式处理:下载、解压、链接并发进行,不浪费时间。
  • 复用 Homebrew bottle:从 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 的缓存机制能帮你省大量时间。这也正是运维/DevOps工作中持续优化效率的体现。

# 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。

  • 注意 $PATH 顺序: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

常见坑与对策

  1. zb install xxx 报错,说找不到 formula

    • 原因:ZeroBrew 目前主要支持核心 formula,一些冷门的可能还不支持。
    • 对策:用上面的 br() 函数,自动回退到 Homebrew。
  2. 装完 ZeroBrew 后,某些命令还是用的 Homebrew 版本

    • 原因$PATH 里 Homebrew 的路径在前面。
    • 对策:调整 $PATH,把 ZeroBrew 的路径放前面:
      export PATH="/opt/zerobrew/store/bin:$PATH"
  3. /opt/zerobrew/store 越来越大

    • 原因:ZeroBrew 会缓存所有装过的包。
    • 对策:定期运行 zb gc 清理。

总结

  1. ZeroBrew 用 Rust 重写了 Homebrew 的核心逻辑,速度快 2-20 倍。
  2. 和 Homebrew 并存,优先用 ZeroBrew 装常用工具,冷门的继续用 Homebrew。
  3. 核心技术是内容寻址存储、APFS clonefile、并行下载和流式处理

下一步

  1. 安装 ZeroBrewcurl -sSL https://raw.githubusercontent.com/lucasgelfond/zerobrew/main/install.sh | bash
  2. 试装几个常用工具zb install jq git wget
  3. 设置智能回退函数(见上文)
  4. 跑个基准测试,看看提速多少
  5. 在 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

如果你也深受软件安装缓慢的困扰,不妨试试这个全新的思路。更多关于开发效率提升的工具和讨论,欢迎来云栈社区交流分享。




上一篇:C++ const 关键字详解:指针常量、函数参数与成员函数的正确用法
下一篇:Zorin OS 18 深度解析:Windows 10 停服后的理想桌面 Linux 替代方案
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-28 19:11 , Processed in 0.331388 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表