Hướng dẫn cài đặt và sử dụng Nala trên Ubuntu: Trình quản lý gói với giao diện trực quan, song song hóa và hiệu suất cao hơn APT

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

APT vẫn dùng được — nhưng Nala làm tốt hơn nhiều

Nếu bạn quản lý Ubuntu Server hàng ngày, chắc chắn bạn đã quen với việc chạy apt update && apt upgrade rồi ngồi nhìn màn hình text lăn dài với đủ thứ thông báo lẫn lộn. Output của APT khá thô — không có thanh tiến trình rõ ràng, không có tổng kết đẹp mắt, và quan trọng nhất: tải các package xong lần lượt thay vì song song.

Mình phát hiện Nala khi đang tìm cách tăng tốc cập nhật trên mấy con server Ubuntu 22.04 của công ty. Thay vì viết script shell phức tạp, Nala giải quyết gọn hơn nhiều. Về bản chất, nó là front-end Python nằm trên libapt-pkg — toàn bộ repository và dependency resolution của APT giữ nguyên, chỉ phần hiển thị và download logic được làm lại sạch hơn.

Những điểm Nala vượt trội hơn APT

  • Tải song song (parallel downloads): Nala tải nhiều package cùng lúc thay vì tuần tự. Trên kết nối 100Mbps, cài 20 package có thể nhanh gấp 2–3 lần.
  • Giao diện rõ ràng: Bảng tóm tắt package sẽ cài/xóa/nâng cấp, thanh progress bar theo thời gian thực, màu sắc phân biệt rõ ràng.
  • Lịch sử cài đặt và rollback: nala history lưu lại mọi transaction. Nếu cài nhầm gì đó, nala history undo <id> rollback lại được.
  • Chọn mirror nhanh nhất tự động: nala fetch benchmark các mirror và tự chọn cái nhanh nhất cho region của bạn.
  • Ít verbose hơn: Không còn hàng trăm dòng log lặp lại — chỉ hiện những gì thực sự quan trọng.

Cài đặt Nala trên Ubuntu

Ubuntu 22.04 trở lên — cài trực tiếp từ repo chính thức

Từ Ubuntu 22.04 (Jammy), Nala đã có trong repository universe nên cài không cần thêm PPA:

# Đảm bảo repo universe đã được bật
sudo add-apt-repository universe

# Cập nhật danh sách package
sudo apt update

# Cài Nala
sudo apt install nala

Ubuntu 20.04 — cần thêm PPA

# Thêm PPA của tác giả
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-scar.list
wget -qO- https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-scar.asc

sudo apt update
sudo apt install nala

Sau khi cài xong, kiểm tra version:

nala --version
# Kết quả dạng: nala 0.15.4

Cấu hình chi tiết

Bước 1: Fetch mirror nhanh nhất

Đây là tính năng mình dùng đầu tiên sau khi cài Nala. Lệnh nala fetch sẽ tự động ping và benchmark các mirror Ubuntu gần nhất, sau đó ghi vào /etc/nala/sources.list:

sudo nala fetch

Nala sẽ hiển thị bảng kết quả benchmark với tốc độ tải thực tế (MB/s) của từng mirror. Bạn chọn số thứ tự của 3–5 mirror muốn dùng (nhập số cách nhau bằng dấu phẩy), hoặc nhấn Enter để chọn tự động:

# Ví dụ output:
# ┌──────────────────────────────────────────────────────┐
# │ Index │ Mirror URL                      │ Speed      │
# ├───────┼─────────────────────────────────┼────────────┤
# │   1   │ http://mirror.kakao.com/ubuntu  │ 45.2 MB/s  │
# │   2   │ http://ftp.jaist.ac.jp/ubuntu   │ 38.7 MB/s  │
# │   3   │ http://ubuntu.mirrors.ovh.net   │ 22.1 MB/s  │
# └──────────────────────────────────────────────────────┘

# Nhập: 1,2,3
# Nala tự ghi vào /etc/nala/sources.list

Mình test config này trên môi trường staging Ubuntu 22.04 trước khi rollout lên production. Kết quả khá rõ: 40 package upgrade từ ~2 phút còn khoảng 45 giây — nhờ kết hợp mirror gần hơn và tải song song cùng lúc.

Bước 2: Làm quen với các lệnh cơ bản

Cú pháp Nala gần như giống APT hoàn toàn, chỉ thay apt bằng nala:

# Cập nhật danh sách package
sudo nala update

# Nâng cấp tất cả package
sudo nala upgrade

# Cài package mới
sudo nala install nginx

# Xóa package
sudo nala remove nginx

# Xóa cả file config
sudo nala purge nginx

# Tìm kiếm package
nala search nginx

# Xem thông tin package
nala show nginx

# Dọn dẹp cache
sudo nala clean
sudo nala autoremove

Bước 3: Kiểm soát số luồng tải song song

Mặc định Nala dùng tối đa 3 luồng tải song song. Nếu muốn tùy chỉnh, chỉnh file cấu hình:

sudo nano /etc/nala/nala.conf
# Nội dung /etc/nala/nala.conf
[nala]
# Số luồng tải song song (khuyến nghị: 3–6 tùy bandwidth)
max_concurrent_downloads = 5

# Tắt animation nếu chạy trong script/CI
no_animation = false

# Tự động xác nhận (thay -y trong apt)
assume_yes = false

Server chạy trong môi trường CI/CD hoặc script tự động? Thêm flag --assume-yes (hoặc -y) và --no-update khi cần:

# Trong Dockerfile hoặc script CI
sudo nala install -y --no-update curl wget git

Bước 4: Tạo alias để chuyển từ APT sang Nala dễ hơn

Nếu tay bạn đã quen gõ apt, thêm alias vào ~/.bashrc hoặc ~/.zshrc:

# Thêm vào ~/.bashrc
alias apt='nala'
alias apt-get='nala'

# Áp dụng ngay
source ~/.bashrc

Tuy nhiên mình không khuyến khích làm vậy trên production — tốt hơn nên gõ nala rõ ràng để biết mình đang dùng tool nào, tránh nhầm lẫn khi debug.

Theo dõi Lịch sử và Rollback với Nala

Xem lịch sử transaction

APT không có tính năng này natively — muốn xem lịch sử phải đọc /var/log/apt/history.log dạng text thô, khá bất tiện. Nala lưu mỗi lần cài/xóa/nâng cấp thành một transaction có ID riêng:

nala history
# Kết quả ví dụ:
# ┌─────┬──────────┬──────────────────────┬──────────┬─────────────────────┐
# │  ID │ Command  │ Date and Time        │ Altered  │ Requested By        │
# ├─────┼──────────┼──────────────────────┼──────────┼─────────────────────┤
# │   1 │ install  │ 2026-06-01 10:23:45  │  4 Pkgs  │ ubuntu (1000)       │
# │   2 │ upgrade  │ 2026-06-01 14:05:12  │ 23 Pkgs  │ ubuntu (1000)       │
# │   3 │ install  │ 2026-06-02 09:11:33  │  2 Pkgs  │ ubuntu (1000)       │
# └─────┴──────────┴──────────────────────┴──────────┴─────────────────────┘

Xem chi tiết một transaction

# Xem package nào đã thay đổi trong transaction ID 2
nala history info 2

Rollback khi cài nhầm

Cài xong package mới phát hiện nó kéo theo cả đống dependency không cần thiết? Hoặc tệ hơn, nó làm hỏng thứ gì đó? Đây là lúc nala history undo phát huy tác dụng:

# Undo transaction ID 3 (gỡ cài đặt những gì đã cài trong lần đó)
sudo nala history undo 3

# Redo nếu muốn cài lại
sudo nala history redo 3

Đừng kỳ vọng nó rollback được mọi thứ — file config đã bị ghi đè thì không khôi phục được. Nhưng để gỡ sạch package và dependency thừa, tính năng này hoạt động rất chắc.

So sánh tốc độ thực tế: Nala vs APT

Bạn có thể tự kiểm tra bằng cách đo thời gian cài cùng một danh sách package:

# Đo thời gian với APT
time sudo apt install -y build-essential curl wget git vim htop tree

# Đo thời gian với Nala (sau khi xóa các package trên)
sudo apt remove -y build-essential curl wget git vim htop tree
time sudo nala install -y build-essential curl wget git vim htop tree

Trên server test của mình (VPS 2 CPU, Ubuntu 22.04, kết nối ~50Mbps), Nala nhanh hơn APT khoảng 35–50% khi cài 10+ package, chủ yếu nhờ tải song song.

Tích hợp vào script bảo trì định kỳ

Script cron đang chạy apt update && apt upgrade định kỳ? Chuyển sang Nala chỉ mất một dòng thay đổi:

#!/bin/bash
# /usr/local/bin/system-update.sh
# Chạy hàng tuần: 0 3 * * 0 root /usr/local/bin/system-update.sh

set -e

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Bắt đầu cập nhật hệ thống..."

# Dùng Nala thay APT
nala update
nala upgrade -y
nala autoremove -y
nala clean

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Cập nhật hoàn tất."

# Kiểm tra có cần reboot không
if [ -f /var/run/reboot-required ]; then
  echo "[WARN] Hệ thống cần reboot để áp dụng kernel mới!"
fi

Một vài lưu ý thực tế

  • Nala vẫn dùng APT bên dưới: Mọi package, dependency resolution, và security đều giữ nguyên — Nala chỉ là lớp UI trên cùng. Nếu có lỗi liên quan đến package, bạn vẫn có thể dùng apt để debug.
  • Không thay thế apt-get trong script cũ: Giữ apt-get trong các script legacy để tránh break — Nala tối ưu cho interactive use.
  • File sources của Nala tách biệt: Sau khi chạy nala fetch, mirror được lưu ở /etc/nala/sources.list chứ không ghi đè /etc/apt/sources.list. Hai file tồn tại song song, Nala merge cả hai khi chạy.
  • Không dùng Nala với debconf frontend đặc biệt: Một số package cần interactive debconf (như iptables-persistent) đôi khi hiển thị không đúng — dùng apt cho những trường hợp đó.

Nala không phải tool cách mạng. Nhưng đúng nghĩa là cải thiện chất lượng sống khi làm việc với server hàng ngày — cài xong dùng ngay, không phải học lại gì cả. Quản lý Ubuntu Server thường xuyên thì mất 2 phút cài Nala là đủ để thấy sự khác biệt ngay lần update đầu tiên.

Share: