Cách cài đặt và sử dụng Homebrew trên Linux: Quản lý Package không cần quyền Root

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Tại sao quản lý package ở cấp độ người dùng lại quan trọng

Quản lý phần mềm trên Linux thường đồng nghĩa với việc sử dụng các công cụ cấp hệ thống như APT, YUM hoặc DNF. Các công cụ này rất ổn định cho hệ điều hành, nhưng chúng hiếm khi cung cấp các phiên bản mới nhất (bleeding-edge) mà các lập trình viên khao khát. Nếu bạn cần Node.js bản mới nhất hoặc một tiện ích CLI cụ thể không có trong kho lưu trữ (repo) của bản phân phối, bạn thường phải tự biên dịch từ mã nguồn hoặc chấp nhận rủi ro khi dùng PPA không chính thức. Đây chính là lúc Homebrew phát huy tác dụng.

Homebrew ban đầu là tiêu chuẩn cho macOS, nhưng hiện nay đây cũng là một cách cực kỳ tiện lợi để người dùng Linux quản lý phần mềm. Nó cài đặt phần mềm trực tiếp vào thư mục home của bạn. Điều này có nghĩa là bạn không bao giờ cần dùng sudo để thêm hoặc xóa công cụ. Đây là một lợi thế lớn cho các môi trường dùng chung hoặc máy chủ production, nơi bạn muốn giữ cho hệ điều hành cốt lõi luôn sạch sẽ và không bị can thiệp.

Homebrew so với các trình quản lý package mặc định

Tại sao phải bận tâm đến Homebrew khi bạn đã có trình quản lý mặc định? Câu trả lời nằm ở vị trí lưu trữ file và tần suất cập nhật của chúng.

1. Toàn hệ thống (System-wide) so với Không gian người dùng (User-space)

APT và DNF đặt các file thực thi (binaries) vào các thư mục được bảo vệ như /usr/bin, yêu cầu quyền truy cập root. Homebrew giữ mọi thứ bên trong /home/linuxbrew/.linuxbrew. Sự cô lập này giúp ngăn chặn tình trạng “địa ngục phụ thuộc” (dependency hell). Bạn sẽ không vô tình ghi đè lên một thư viện mà hệ điều hành cần để hoạt động chỉ vì một công cụ lập trình mới yêu cầu phiên bản cao hơn.

2. Nhu cầu cập nhật nhanh chóng

Các kho lưu trữ tiêu chuẩn ưu tiên tính ổn định hơn là sự mới mẻ. Debian Stable có thể giữ bạn ở phiên bản Python 3.9 trong nhiều năm, ngay cả khi 3.12 đã trở thành tiêu chuẩn ngành. Homebrew sử dụng mô hình rolling release. Nếu một phiên bản mới của ripgrep hoặc fzf được phát hành hôm nay, bạn thường có thể cài đặt nó qua Homebrew chỉ sau vài giờ.

3. Sự đồng nhất về môi trường

Việc chuyển đổi giữa máy tính Mac và máy chủ Linux trở nên dễ dàng hơn nhiều khi môi trường của bạn nhất quán. Bằng cách sử dụng một file Brewfile duy nhất, bạn có thể tái lập toàn bộ bộ công cụ của mình trên các hệ điều hành khác nhau. Bạn nhận được chính xác các phiên bản giống nhau và sử dụng các lệnh giống nhau bất kể nhân hệ điều hành bên dưới là gì.

Những đánh đổi khi sử dụng Homebrew

Không có công cụ nào là giải pháp vạn năng cho mọi vấn đề. Trước khi bắt đầu, điều quan trọng là phải hiểu những chi phí đi kèm với thiết lập này.

Ưu điểm

  • Không cần quyền Root: Sau khi hoàn tất thiết lập ban đầu, bạn có thể quên đi lệnh sudo brew install mãi mãi.
  • Công cụ mới nhất: Bạn có quyền truy cập tức thì vào các tiện ích CLI mới nhất mà không cần chờ nâng cấp hệ điều hành lớn.
  • Môi trường Sandbox an toàn: Nó hoạt động như một môi trường phụ trợ. Nếu một bản cài đặt Homebrew thất bại, khả năng khởi động hoặc quản lý dịch vụ mạng của máy chủ vẫn hoàn toàn không bị ảnh hưởng.
  • Hiệu quả: Trên một máy chủ Ubuntu 22.04 production với 4GB RAM, tôi nhận thấy Homebrew quản lý môi trường Ruby và Python nhanh hơn so với việc chạy nhiều trình quản lý phiên bản như rbenv và pyenv cùng lúc.

Nhược điểm

  • Dung lượng ổ đĩa: Homebrew thường đi kèm với các phụ thuộc riêng của nó, bao gồm cả glibcgcc, để đảm bảo nó hoạt động trên mọi bản phân phối. Điều này có thể tiêu tốn từ 500MB đến 1GB dung lượng trước khi bạn cài đặt ứng dụng đầu tiên.
  • Hiệu năng: Vì Homebrew ưu tiên khả năng tương thích rộng rãi, các file thực thi của nó có thể thiếu các tối ưu hóa cụ thể có trong các package được biên dịch riêng cho kiến trúc của bạn bởi đội ngũ Debian hoặc Fedora.

Điều kiện tiên quyết: Chuẩn bị hệ thống

Homebrew cần một vài công cụ build cơ bản để hoạt động. Nó thường xây dựng các “bottles” (binary đã biên dịch sẵn) hoặc biên dịch từ mã nguồn, vì vậy một môi trường phát triển đầy đủ là bắt buộc.

Dành cho Ubuntu, Debian hoặc Linux Mint:

sudo apt update
sudo apt install build-essential procps curl file git

Dành cho Fedora, CentOS hoặc RHEL:

sudo dnf groupinstall "Development Tools"
sudo dnf install procps-ng curl file git

Đảm bảo hệ thống của bạn có ít nhất 2GB RAM trống. Quá trình thiết lập bao gồm kiểm tra môi trường và biên dịch nhẹ, có thể tiêu tốn nhiều tài nguyên bất ngờ trên các instance VPS nhỏ.

Hướng dẫn cài đặt từng bước

Việc cài đặt chỉ dựa trên một script duy nhất, nhưng công việc thực sự nằm ở chỗ cấu hình môi trường shell để nhận diện các lệnh mới.

1. Chạy trình cài đặt

Bắt đầu bằng cách thực thi script chính thức từ kho lưu trữ của Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Script sẽ tạm dừng để hiển thị chính xác những gì nó dự định làm. Trên hầu hết các hệ thống Linux, nó tạo một thư mục riêng tại /home/linuxbrew/.linuxbrew cho mọi hoạt động của mình.

2. Cấu hình Shell Path

Sau khi script chạy xong, Homebrew đã được cài đặt nhưng shell của bạn vẫn chưa nhận biết được nó. Bạn phải thêm nó vào file .bashrc hoặc .zshrc một cách thủ công. Trình cài đặt sẽ gợi ý các lệnh cụ thể, thường trông như thế này:

test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "eval \"\$($(test -d ~/.linuxbrew && echo ~/.linuxbrew/bin/brew || echo /home/linuxbrew/.linuxbrew/bin/brew) shellenv)\"" >> ~/.bashrc

Áp dụng các thay đổi này cho phiên làm việc hiện tại bằng cách chạy:

source ~/.bashrc

3. Xác nhận mọi thứ hoạt động bình thường

Chạy công cụ chẩn đoán tích hợp để xác minh thiết lập:

brew doctor

Nếu kết quả hiển thị “Your system is ready to brew,” bạn đã hoàn tất. Nếu bạn thấy các cảnh báo về thiếu header, hãy kiểm tra kỹ xem bạn đã cài đặt các package build-essential hoặc Development Tools đã đề cập ở trên chưa.

Sử dụng thực tế và quy trình làm việc

Khi môi trường đã sẵn sàng, bạn có thể bắt đầu quản lý các bộ công cụ phát triển hiện đại mà không cần chạm vào các file hệ thống.

Cài đặt các công cụ hiện đại

Hãy thử cài đặt eza (một công cụ thay thế hiện đại cho ls) và bat (một bản sao của cat có hỗ trợ làm nổi bật cú pháp):

brew install eza bat

Cập nhật bộ công cụ của bạn

Homebrew giúp việc cập nhật công cụ trở nên vô cùng đơn giản. Bạn có thể cập nhật toàn bộ môi trường user-space của mình bằng hai lệnh:

brew update
brew upgrade

Sử dụng Brew Bundle

Tôi sử dụng Brewfile để đồng bộ hóa thiết lập của mình trên nhiều máy chủ ngay lập tức. Bạn có thể xuất danh sách package hiện tại vào một file bằng lệnh brew bundle dump. Trên một máy mới, chỉ cần chạy brew bundle install để sao chép môi trường của bạn trong vài giây.

Giải phóng dung lượng ổ đĩa

Homebrew giữ lại các phiên bản cũ của package sau mỗi lần nâng cấp. Mặc dù điều này rất tốt để khôi phục khi gặp lỗi, nhưng nó có thể nhanh chóng chiếm dụng bộ nhớ của bạn. Tôi đã từng thấy brew cleanup giải phóng hơn 2GB dung lượng chỉ sau vài tháng sử dụng. Hãy chạy lệnh này hàng tháng để giữ cho phân vùng /home của bạn luôn gọn gàng.

Lời kết

Sử dụng Homebrew trên Linux không phải là để thay thế các công cụ mặc định; mà là để bổ trợ cho chúng. Tôi vẫn dựa vào APT cho các bản vá bảo mật cốt lõi và cập nhật kernel. Tuy nhiên, tôi sử dụng Homebrew cho các công cụ mà tôi chạm vào mỗi phút—trình soạn thảo, trình đa nhiệm terminal và các runtime ngôn ngữ. Sự tách biệt này giúp hệ điều hành bên dưới luôn ổn định trong khi vẫn cho phép tôi tự do sử dụng những phần mềm mới nhất hiện có.

Share: