blog.dopana

Back

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 đềHomebrewNanobrew
Khởi động chậmbrew install chạy brew update trước (có thể mất phút)nb install chỉ cài, không auto-update
Runtime nặngRuby (~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ộtDownload song song mọi dependencies
Gatekeeper quarantineCasks bị dán nhãn “Are you sure?”Skip quarantine, mở app ngay
Warm installbrew bundle kiểm tra lại ~10s dù đã càiTrả 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):

PackageHomebrewnanobrew (warm)
tree (0 deps)4.070s0.009s
ffmpeg (11 deps)14.252s0.287s
wget (6 deps)3.935s0.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 setapt-getnanobrew (warm)Speedup
curl wget (35 deps)3.4s0.4s7.6x
git vim build-essential (116 deps)43.8s3.4s12.9x

Cài Đặt#

Một dòng lệnh là xong:

curl -fsSL https://nanobrew.trilok.ai/install | bash
bash

Hoặc qua Homebrew (nếu bạn vẫn còn dùng):

brew tap justrach/nanobrew https://github.com/justrach/nanobrew
brew install nanobrew
bash

Hoặc build từ source (cần Zig 0.16.0+):

git clone https://github.com/justrach/nanobrew.git
cd nanobrew && ./install.sh
bash

Sau 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 & cask
bash

Phiê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ũ
bash

macOS 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ả casks
bash

Linux / 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 packages
bash

Third-Party Taps#

nb install steipete/tap/sag # cài từ third-party tap
# Không cần brew tap — Nanobrew tự fetch formula từ GitHub
bash

Bundle / Brewfile#

nb bundle dump # export danh sách gói đã cài
nb bundle install # cài lại từ bundle file
bash

Services#

nb services list # xem launchctl services
nb services start postgresql # start service
nb services stop postgresql # stop service
bash

Migration từ Homebrew#

nb migrate # quét /opt/homebrew, import vào Nanobrew
bash

Sau 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/
text

So Sánh Kích Thước#

Công cụKích thước
Homebrew~57 MB (Ruby runtime)
zerobrew7.9 MB
nanobrew1.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 tap command — 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.

Tài liệu tham khảo#