Quản Lý Gói Phần Mềm: apt, dnf, apk
Tới giờ ta dùng phần mềm có sẵn. Bài này học cách thêm phần mềm — qua trình quản lý gói (package manager). Đây là cách đúng để cài phần mềm trên Linux: không tải file lung tung, mà lấy từ kho gói chính thức của distro, kèm xử lý phụ thuộc tự động.
Trình quản lý gói làm gì
Khi bạn cài một phần mềm, nó thường cần các thư viện khác (phụ thuộc — dependencies). Trình quản lý gói lo việc đó: nó biết một gói cần gì, tự tải và cài kèm, và theo dõi mọi thứ đã cài để sau này gỡ sạch.
Nó làm việc với hai thứ:
- Repository (repo): kho gói trên mạng do distro vận hành.
- Package index: danh sách gói + phiên bản có trong repo, được tải về máy. Đây là lý do có bước "cập nhật danh sách" trước khi cài (nói kỹ ở dưới).
Mỗi họ distro một trình quản lý
Trình quản lý gói khác nhau theo họ distro — đây là khác biệt lớn nhất giữa các distro (Bài 0):
- apt — họ Debian: Debian, Ubuntu, Mint. Gói
.deb. - dnf (kế thừa
yum) — họ Red Hat: Fedora, RHEL, CentOS, Rocky. Gói.rpm. - apk — Alpine (rất phổ biến trong container Docker vì nhẹ).
- pacman — Arch, Manjaro.
Lệnh khác nhau nhưng ý tưởng giống hệt. Bảng tương đương cho các thao tác hay dùng:
Thao tác apt (Ubuntu) dnf (Fedora) apk (Alpine)
──────────────────────────────────────────────────────────────────────────
Cập nhật danh sách apt update dnf check-update apk update
Cài gói apt install <gói> dnf install <gói> apk add <gói>
Gỡ gói apt remove <gói> dnf remove <gói> apk del <gói>
Nâng cấp tất cả apt upgrade dnf upgrade apk upgrade
Tìm gói apt search <từ> dnf search <từ> apk search <từ>
Xem thông tin gói apt show <gói> dnf info <gói> apk info <gói>
Nắm một cái thì cái khác chỉ là tra lại tên lệnh.
apt: dùng trên Ubuntu/Debian
Vì lab của ta là Ubuntu, đi kỹ vào apt. (Trên server thật thường cần sudo trước các lệnh này — Bài 12; trong container bạn là root nên không cần.)
Cập nhật danh sách gói trước — bước nhiều người mới quên:
apt update
Cài một gói:
apt install jq
... jq-1.7 ...
(jq là công cụ xử lý JSON — ta đã dùng nhiều ở các series trước.) Gỡ:
apt remove jq # gỡ gói
apt autoremove # gỡ các phụ thuộc không còn ai cần
Tìm và xem thông tin:
apt search json # tìm gói liên quan "json"
apt show jq # phiên bản, mô tả, phụ thuộc
Xem các gói đã cài (lệnh cấp thấp dpkg):
dpkg -l # liệt kê mọi gói đã cài
dpkg -l | grep nginx # gói nào liên quan nginx
Phân biệt quan trọng: update ≠ upgrade
Đây là lỗi hiểu lầm phổ biến nhất với apt:
apt update— chỉ làm mới danh sách gói (tải package index mới nhất từ repo). Không cài hay nâng cấp gì cả. Nó chỉ cho apt biết "hiện có những gói/phiên bản nào".apt upgrade— nâng cấp các gói đã cài lên phiên bản mới nhất mà danh sách (vừa update) biết.
Vì vậy thứ tự nâng cấp hệ thống luôn là:
apt update && apt upgrade
update trước để biết có bản mới, rồi upgrade để cài. Chạy apt upgrade mà quên update thì apt vẫn dùng danh sách cũ, không thấy bản mới. Nhớ: update = làm mới danh sách, upgrade = nâng cấp phần mềm.
Vì sao trong Dockerfile hay thấy
apt-get update && apt-get install -y ...trong cùng một dòng (Bài 5 series Docker): vì image base không kèm package index (để nhẹ), nên phảiupdateđể tải danh sách trước khiinstall. Cờ-ytự trả lời "yes" cho các câu hỏi xác nhận (cần khi chạy tự động).
apt(mới, thân thiện cho người dùng) vàapt-get(cũ, ổn định cho script) gần như tương đương cho các lệnh cơ bản. Trong script nên dùngapt-getvì giao diện ổn định hơn.
Cài phần mềm ngoài repo
Đôi khi phần mềm bạn cần không có trong repo mặc định. Vài cách (theo thứ tự ưu tiên về độ an toàn/tiện):
- Thêm repo chính thức của nhà phát hành rồi
apt installnhư thường — cách sạch nhất, vẫn được cập nhật tự động. - Tải gói
.debrồiapt install ./file.deb— cài thủ công, nhưng apt vẫn quản lý. - Snap/Flatpak — định dạng gói đóng gói kèm phụ thuộc, có trên nhiều distro.
Tránh tải binary lạ chạy thẳng nếu có lựa chọn qua repo — repo được ký và kiểm duyệt, an toàn hơn.
🧹 Dọn dẹp
apt remove -y jq 2>/dev/null
apt autoremove -y 2>/dev/null
apt clean # xóa cache các gói đã tải về (lấy lại đĩa)
Tổng kết
Cài phần mềm trên Linux qua trình quản lý gói: apt (Ubuntu/Debian), dnf (Fedora/RHEL), apk (Alpine) — khác lệnh nhưng cùng ý tưởng (install/remove/search/upgrade từ repo, tự xử lý phụ thuộc). Với apt, nhớ kỹ update làm mới danh sách ≠ upgrade nâng cấp phần mềm, và mẫu chuẩn apt update && apt upgrade. Ưu tiên cài qua repo chính thức thay vì tải binary lạ.
Cài phần mềm xong, nhưng ai được cài và chạy gì? Bài 12 chuyển sang quản lý người dùng: user, group, và sudo — quyền quản trị trên Linux.