nanobrew:用 Zig 重写的极速 macOS / Linux 包管理器 #
nanobrew 是什么? #
nanobrew 是一款用 Zig 语言编写的命令行包管理器,主要面向 macOS 与 Linux,被官方定义为“最快的 macOS 包管理器”,也是 Homebrew 的高性能替代方案。它复用了 Homebrew 的 bottle 生态,但把解析依赖、下载、校验、解压、落盘、软链接的全部流程换成自研的原生 Zig 实现,从而绕开了 Ruby 运行时和 curl 子进程带来的开销。
对于长期被 brew install 的漫长等待困扰的开发者来说,nanobrew 的意义在于把“等安装”变成“几乎不用等”:官方基准显示,tree 热安装在 Apple Silicon 上仅需 17ms,ffmpeg 这类 11 个依赖的包热安装从 Homebrew 的约 24.5 秒降到 3.5ms,提升约 7,000 倍。整个工具只有一个约 2MB 的静态二进制,无需 Ruby、无需解释器启动、无配置文件膨胀,安装即用。
nanobrew 有哪些亮点特色? #
-
极致的安装速度:官方基准中,
tree冷安装在 Intel Mac 上比 Homebrew 快 5.18 倍(0.507s vs 2.629s),在 Apple Silicon 上快 1.96 倍(0.536s vs 1.049s);热安装最快可到 39ms,且仍带完整安全检查。 -
APFS clonefile 写时复制:在 macOS 上通过系统调用把包“克隆”进 Cellar 目录,利用写时复制实现零额外磁盘开销,同一份内容多次安装几乎不占空间。
-
并行一切的设计:下载、解压、路径重定位、依赖解析全部并发执行;依赖解析采用并行的广度优先搜索(BFS),跨多个并发 API 调用同时展开。
-
原生 HTTP 与原生 Mach-O 解析:用 Zig 标准库的
std.http.Client取代 curl 子进程,直接读取 Mach-O 二进制头部获取 load command,不再调用otool,并批量执行 codesign。 -
内容寻址存储(Content-addressed store):所有包以 SHA256 为键去重存储,重装时可直接跳过下载与解压阶段,这也是热安装能进入毫秒级的关键。
-
单一静态二进制:整个工具约 2MB,没有 Ruby 运行时、没有解释器启动开销、没有配置散落,下载解压后即可使用。
-
原生安装路径,无需 Homebrew 运行时:v0.1.192 起,Top 100 Homebrew formula 与 Top 100 cask 共 359 条经过验证的原生路径已内置于注册表中,这些包不需要安装 Homebrew、不调用
brew、也不走 Ruby 元数据路径。 -
已签名与 Apple 公证:macOS 二进制包使用 Developer ID 代码签名,启用 Hardened Runtime 并通过 Apple 公证服务,Gatekeeper 首次运行即可放行。

免费下载 nanobrew #
以下为官方提供的各平台安装包,点击链接即可下载。下载后请对照官网发布页校验 SHA256,macOS 用户可进一步用 codesign --verify --deep --strict 验证签名完整性。
| 文件名 | 描述 | 大小 | 下载 |
|---|---|---|---|
| nb-aarch64-linux.tar.gz | Linux ARM64(aarch64)版本 | 1.2 MB | 夸克网盘 |
| nb-arm64-apple-darwin.tar.gz | macOS Apple Silicon(arm64)版本 | 1.2 MB | 夸克网盘 |
| nb-x86_64-apple-darwin.tar.gz | macOS Intel(x86_64)版本 | 1.3 MB | 夸克网盘 |
| nb-x86_64-linux.tar.gz | Linux x86_64 版本 | 1.2 MB | 夸克网盘 |
| nb-x86_64-windows.zip | Windows x86_64 版本(官网主要定位为 macOS / Linux) | 209.1 KB | 夸克网盘 |
官网同时提供一键安装脚本,可直接在终端执行:
curl -fsSL https://nanobrew.trilok.ai/install | bash
nanobrew 如何使用? #
nanobrew 是一个纯命令行工具,常见操作只需几条指令即可完成。
-
初始化环境:安装完成后重启终端,或执行安装脚本打印的
export命令,让nb命令进入 PATH。随后运行sudo nb init完成初始化——该命令会把相关目录的所有权变更到当前用户,之后所有操作都不再需要sudo。 -
安装软件包:使用
nb install <包名>安装,例如nb install jq。终端会依次输出依赖解析(==> Resolving dependencies...)、下载与安装进度,最后给出总耗时。 -
查看已安装内容:用
nb list列出已安装的包;用nb where <关键字>一次性聚合查询已安装的 keg/cask/deb、$PREFIX/{bin,lib,opt}下的文件以及 formula 索引匹配结果,替代过去nb list | grep X、ls $PREFIX/lib | grep X、nb search X三条命令的组合。 -
查询包信息:
nb info <包名>会输出描述、主页、许可证、bottle / 源码 URL 与 sha256、依赖、构建依赖和 caveats;nb info --cask <包名>可查看 cask 元数据。 -
从 Homebrew 迁移:使用
nb migrate从现有 Homebrew 环境导入;nb bundle install支持读取 Brewfile,已安装项会立即返回(instant no-ops)。 -
自我更新:执行
nb update即可把 nanobrew 自身升级到最新版本,命令会输出更新进度与结果。 -
控制遥测:如需关闭匿名遥测,运行
nb telemetry off或nanobrew telemetry off。
nanobrew 的常见问题? #
nanobrew 和 Homebrew 是什么关系? nanobrew 构建在 Homebrew 的 bottle 生态之上,使用上游已验证的 artifact URL 与校验和;但对于已覆盖的 359 条原生路径(256 条 formula + 103 条 cask),它完全由自己的 Zig 安装机制完成解析、下载、校验、解压、缓存、链接与状态记录,不依赖 Homebrew 运行时。
使用 nanobrew 需要先安装 Homebrew 吗?
不需要。官网明确说明,已覆盖的包“不需要安装 Homebrew、不 spawn brew、不触碰 Ruby 元数据路径”。对于注册表尚未覆盖的包,nanobrew 会回落到 Homebrew 生态获取元数据。
为什么安装速度能比 Homebrew 快这么多? 关键在于去掉了 Ruby 运行时与 curl 子进程,并改用并行依赖解析、原生 HTTP、原生 Mach-O 解析和内容寻址存储;macOS 上还额外使用 APFS clonefile,让落盘阶段变成写时复制,几乎不产生磁盘 I/O。
macOS Intel 机器能用吗? v0.1.191 已提供 arm64 与 x86_64 两个平台的签名、公证构建。但 v0.1.192 的发布说明指出,由于 Rosetta 下签名二进制存在启动崩溃问题(未签名 x86 构建返回状态 0,签名/公证后的 x86 构建退出码 139),该版本未发布 x86 artifact。Intel 用户建议选用对应版本的官方构建并留意后续发布说明。
如何确认下载的二进制没有被篡改?
官网给出了四步验证方法:用 shasum -a 256 -c 校验传输完整性;用 codesign -dv --verbose=4 确认 Developer ID 与 Apple Root CA;用 codesign --verify --deep --strict 检查签名内部一致性;确认输出中包含 flags=0x10000(runtime) 以验证 Hardened Runtime 已启用。
想要的包还没有支持怎么办? 官网提供 Package requests 页面,粘贴该工具的 GitHub 仓库 URL 或为已有请求投票即可。同一仓库的链接共享一个条目,每个浏览器对每个包计一票;官方说明投票只作为需求信号,用于排定优先级,并不保证一定支持。
nanobrew 如何安装? #
macOS #
- 推荐使用官方一键脚本:在终端执行
curl -fsSL https://nanobrew.trilok.ai/install | bash。 - 安装结束后,重启终端,或手动执行脚本打印的
export命令。 - 运行
sudo nb init完成初始化,该步骤会把目录所有权交还给当前用户,此后无需再使用sudo。 - 若选择手动安装,可下载
nb-arm64-apple-darwin.tar.gz(Apple Silicon)或nb-x86_64-apple-darwin.tar.gz(Intel),解压后将nb放入 PATH 目录即可。
Linux #
- 同样可直接使用一键脚本
curl -fsSL https://nanobrew.trilok.ai/install | bash。 - 或下载
nb-aarch64-linux.tar.gz(ARM64)/nb-x86_64-linux.tar.gz(x86_64),解压后把可执行文件加入 PATH。 - 执行
sudo nb init完成初始化。
Windows #
- 下载
nb-x86_64-windows.zip并解压。 - 将解压目录加入系统 PATH 环境变量。
- 需要注意:官网的定位是“面向 macOS 与 Linux 的包管理器”,Windows 支持不在官方主要说明范围内,建议以官网最新说明为准。
安装 nanobrew 后如需从 Homebrew 迁移已有环境,可执行
nb migrate;若项目使用 Brewfile 管理依赖,可直接运行nb bundle install。
nanobrew 如何卸载? #
macOS / Linux #
- 移除由 nanobrew 安装的软件包:先逐个执行
nb remove <包名>,把通过 nanobrew 安装的 formula、cask 或 deb 清理干净。 - 删除 nanobrew 本体与数据目录:其安装内容默认位于
/opt/nanobrew(含prefix、内容寻址存储与本地数据库)。确认不再需要后,删除该目录即可。 - 清理 shell 配置:编辑
~/.zshrc、~/.bashrc或~/.profile,移除安装脚本写入的 PATH 相关行;随后执行source或重开终端使其生效。 - 校验残留:确认
which nb不再返回路径,且/opt/nanobrew已不存在。
Windows #
- 从系统 PATH 环境变量中移除 nanobrew 的解压目录。
- 直接删除解压出来的文件夹即可,该版本为绿色压缩包形式,不写入注册表安装项。
- 若曾使用 nanobrew 安装过软件包,请先执行
nb remove <包名>再删除主目录,避免残留已链接的命令行工具。
提示:nanobrew 会在本地保留内容寻址存储与安装数据库以加速重装,卸载前请确认其中是否还有你希望保留的软件包;如有需要,可先执行
nb list记录清单再操作。
