Nanobrew — Quản Lý Gói macOS Siêu Nhanh Bằng Zig
Nanobrew là package manager thay thế Homebrew, viết bằng Zig — warm install 3ms, parallel downloads, binary 1.2MB, không Ruby, hỗ trợ Linux .deb.
Bạn có bao giờ chạy brew install và chờ đợi… rồi chờ thêm một lúc nữa vì brew cứ brew update trước khi cài? Hoặc cảm thấy bực mình vì Homebrew — dù rất tuyệt — lại nặng nề và chậm chạp?
Nanobrew ra đời để giải quyết vấn đề đó: một trình quản lý gói siêu nhanh cho macOS (và Linux), viết hoàn toàn bằng Zig, tương thích ngược với hệ sinh thái Homebrew.
Nanobrew Là Gì?#
Nanobrew là một client thay thế cho Homebrew, không phải fork. Nó dùng chính công thức (formulae), bottles, và casks của Homebrew — nhưng được viết lại từ đầu bằng Zig, tạo ra một binary tĩnh 1.2 MB duy nhất, không cần Ruby runtime.
Tác giả: Rach (GitHub: justrach ↗).
Tại Sao Lại Cần?#
Homebrew là công cụ tuyệt vời, nhưng có một số vấn đề:
| Vấn đề | Homebrew | Nanobrew |
|---|---|---|
| Khởi động chậm | brew install chạy brew update trước (có thể mất phút) | nb install chỉ cài, không auto-update |
| Runtime nặng | Ruby (~57 MB) | Binary 1.2 MB, khởi động tức thì |
| Download tuần tự | Mặc định download từng cái một | Download song song mọi dependencies |
| Gatekeeper quarantine | Casks bị dán nhãn “Are you sure?” | Skip quarantine, mở app ngay |
| Warm install | brew bundle kiểm tra lại ~10s dù đã cài | Trả về ngay trong mili giây |
Hiệu Năng#
Đây là điểm Nanobrew gây ấn tượng nhất. Các benchmark trên GitHub Actions (Apple Silicon):
| Package | Homebrew | nanobrew (warm) |
|---|---|---|
tree (0 deps) | 4.070s | 0.009s |
ffmpeg (11 deps) | 14.252s | 0.287s |
wget (6 deps) | 3.935s | 0.027s |
Nanobrew nhanh hơn 15–45 lần so với Homebrew trên warm installs nhờ:
- Content-addressable store — lưu bottles theo SHA256, reinstall là instant
- APFS clonefile — zero-copy trên macOS, không tốn thêm dung lượng
- Streaming SHA256 — verify hash trong lúc download, không cần quét lại
- Parallel downloads — tất cả dependencies tải cùng lúc
Trên Linux, Nanobrew cũng thay thế được apt-get với speedup lên đến 13 lần:
| Package set | apt-get | nanobrew (warm) | Speedup |
|---|---|---|---|
| curl wget (35 deps) | 3.4s | 0.4s | 7.6x |
| git vim build-essential (116 deps) | 43.8s | 3.4s | 12.9x |
Cài Đặt#
Một dòng lệnh là xong:
curl -fsSL https://nanobrew.trilok.ai/install | bashbashHoặc qua Homebrew (nếu bạn vẫn còn dùng):
brew tap justrach/nanobrew https://github.com/justrach/nanobrew
brew install nanobrewbashHoặc build từ source (cần Zig 0.16.0+):
git clone https://github.com/justrach/nanobrew.git
cd nanobrew && ./install.shbashSau cài đặt, gõ nb help để xem tất cả lệnh.
Cách Dùng#
Nanobrew dùng tiền tố nb, cú pháp quen thuộc nếu bạn đã dùng Homebrew:
Lệnh Cơ Bản#
nb install tree # cài một gói
nb install ffmpeg wget curl # cài nhiều gói cùng lúc
nb remove tree # gỡ cài đặt
nb list # xem gói đã cài
nb info jq # thông tin gói
nb search ripgrep # tìm kiếm formula & caskbashPhiên Bản Cụ Thể#
nb install hexyl@0.17.0 # cài đúng version
nb pin tree # giữ nguyên version (ko upgrade)
nb unpin tree # cho phép upgrade lại
nb rollback tree # quay lại version cũbashmacOS Apps (Casks)#
nb install --cask firefox # cài app .dmg/.pkg/.zip
nb remove --cask firefox # gỡ app
nb upgrade --cask # upgrade tất cả casksbashLinux / Docker (.deb)#
nb install --deb curl wget git # cài từ Ubuntu/Debian repos
nb remove --deb curl # gỡ deb package
nb upgrade --deb # upgrade tất cả deb packagesbashThird-Party Taps#
nb install steipete/tap/sag # cài từ third-party tap
# Không cần brew tap — Nanobrew tự fetch formula từ GitHubbashBundle / Brewfile#
nb bundle dump # export danh sách gói đã cài
nb bundle install # cài lại từ bundle filebashServices#
nb services list # xem launchctl services
nb services start postgresql # start service
nb services stop postgresql # stop servicebashMigration từ Homebrew#
nb migrate # quét /opt/homebrew, import vào NanobrewbashSau migration, nb list, nb outdated, nb upgrade đều thấy được gói cũ.
Cách Hoạt Động#
Nanobrew không dùng Ruby, không gọi brew subprocess. Nó tự làm mọi thứ:
nb install ffmpeg
│
├─ 1. Resolve dependencies (BFS, parallel API calls)
├─ 2. Skip gói đã cài (warm path: ~3.5ms)
├─ 3. Download bottles song song (HTTP native, streaming SHA256)
├─ 4. Extract vào content-addressable store (/opt/nanobrew/store/<sha>)
├─ 5. Clone vào Cellar qua APFS clonefile (zero-copy)
├─ 6. Relocate Mach-O headers + batch codesign
└─ 7. Symlink binaries vào /opt/nanobrew/prefix/bin/textSo Sánh Kích Thước#
| Công cụ | Kích thước |
|---|---|
| Homebrew | ~57 MB (Ruby runtime) |
| zerobrew | 7.9 MB |
| nanobrew | 1.2 MB |
Nanobrew nhỏ hơn zerobrew 6.8 lần và nhỏ hơn Homebrew 47 lần.
Hạn Chế#
Nanobrew còn ở giai đoạn experimental. Một số thứ chưa hỗ trợ:
- Ruby post_install hooks — formula có script Ruby sẽ không chạy
- Build from source với custom options —
args: ["with-feature"]bị ignore brew tapcommand — Nanobrew tự fetch, không cần lệnh tap riêng- Mac App Store (mas) — không hỗ trợ
- Complex Ruby DSL trong Brewfiles — conditional blocks, custom Ruby code
Nếu bạn cần những tính năng này, Homebrew vẫn là lựa chọn an toàn hơn.
Kết Luận#
Nanobrew là một dự án đầy tham vọng: thay thế Homebrew bằng một binary Zig 1.2 MB, nhanh hơn 15–45 lần, tương thích ngược với toàn bộ hệ sinh thái Homebrew. Dù còn experimental, nó đã đủ dùng cho luồng công việc hàng ngày — cài package, cask, bundle — và đặc biệt hữu ích trong Docker khi cần thay apt-get.
Nếu bạn là người yêu thích tốc độ và muốn giảm thời gian chờ đợi vô ích, Nanobrew đáng để thử ngay hôm nay.