首页/软件/nanobrew

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 官网首页截图

免费下载 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 是一个纯命令行工具,常见操作只需几条指令即可完成。

  1. 初始化环境:安装完成后重启终端,或执行安装脚本打印的 export 命令,让 nb 命令进入 PATH。随后运行 sudo nb init 完成初始化——该命令会把相关目录的所有权变更到当前用户,之后所有操作都不再需要 sudo。

  2. 安装软件包:使用 nb install <包名> 安装,例如 nb install jq。终端会依次输出依赖解析(==> Resolving dependencies...)、下载与安装进度,最后给出总耗时。

  3. 查看已安装内容:用 nb list 列出已安装的包;用 nb where <关键字> 一次性聚合查询已安装的 keg/cask/deb、$PREFIX/{bin,lib,opt} 下的文件以及 formula 索引匹配结果,替代过去 nb list | grep X、ls $PREFIX/lib | grep X、nb search X 三条命令的组合。

  4. 查询包信息:nb info <包名> 会输出描述、主页、许可证、bottle / 源码 URL 与 sha256、依赖、构建依赖和 caveats;nb info --cask <包名> 可查看 cask 元数据。

  5. 从 Homebrew 迁移:使用 nb migrate 从现有 Homebrew 环境导入;nb bundle install 支持读取 Brewfile,已安装项会立即返回(instant no-ops)。

  6. 自我更新:执行 nb update 即可把 nanobrew 自身升级到最新版本,命令会输出更新进度与结果。

  7. 控制遥测:如需关闭匿名遥测,运行 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 #

  1. 推荐使用官方一键脚本:在终端执行 curl -fsSL https://nanobrew.trilok.ai/install | bash。
  2. 安装结束后,重启终端,或手动执行脚本打印的 export 命令。
  3. 运行 sudo nb init 完成初始化,该步骤会把目录所有权交还给当前用户,此后无需再使用 sudo。
  4. 若选择手动安装,可下载 nb-arm64-apple-darwin.tar.gz(Apple Silicon)或 nb-x86_64-apple-darwin.tar.gz(Intel),解压后将 nb 放入 PATH 目录即可。

Linux #

  1. 同样可直接使用一键脚本 curl -fsSL https://nanobrew.trilok.ai/install | bash。
  2. 或下载 nb-aarch64-linux.tar.gz(ARM64)/nb-x86_64-linux.tar.gz(x86_64),解压后把可执行文件加入 PATH。
  3. 执行 sudo nb init 完成初始化。

Windows #

  1. 下载 nb-x86_64-windows.zip 并解压。
  2. 将解压目录加入系统 PATH 环境变量。
  3. 需要注意:官网的定位是“面向 macOS 与 Linux 的包管理器”,Windows 支持不在官方主要说明范围内,建议以官网最新说明为准。

安装 nanobrew 后如需从 Homebrew 迁移已有环境,可执行 nb migrate;若项目使用 Brewfile 管理依赖,可直接运行 nb bundle install。

nanobrew 如何卸载? #

macOS / Linux #

  1. 移除由 nanobrew 安装的软件包:先逐个执行 nb remove <包名>,把通过 nanobrew 安装的 formula、cask 或 deb 清理干净。
  2. 删除 nanobrew 本体与数据目录:其安装内容默认位于 /opt/nanobrew(含 prefix、内容寻址存储与本地数据库)。确认不再需要后,删除该目录即可。
  3. 清理 shell 配置:编辑 ~/.zshrc、~/.bashrc 或 ~/.profile,移除安装脚本写入的 PATH 相关行;随后执行 source 或重开终端使其生效。
  4. 校验残留:确认 which nb 不再返回路径,且 /opt/nanobrew 已不存在。

Windows #

  1. 从系统 PATH 环境变量中移除 nanobrew 的解压目录。
  2. 直接删除解压出来的文件夹即可,该版本为绿色压缩包形式,不写入注册表安装项。
  3. 若曾使用 nanobrew 安装过软件包,请先执行 nb remove <包名> 再删除主目录,避免残留已链接的命令行工具。

提示:nanobrew 会在本地保留内容寻址存储与安装数据库以加速重装,卸载前请确认其中是否还有你希望保留的软件包;如有需要,可先执行 nb list 记录清单再操作。

相关标签
nanobrewmacOS 包管理器Homebrew 替代Zig 包管理器极速安装APFS clonefileLinux 包管理器终端包管理命令行工具管理