❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.
Khi dùng VPS, việc đầu tiên bạn sẽ làm thường xuyên là cài phần mềm. Nginx, MySQL, PHP, Git, htop… tất cả đều được cài thông qua một công cụ gọi là package manager. Bài này mình sẽ hướng dẫn bạn sử dụng thành thạo 2 package manager phổ biến nhất: apt trên Ubuntu/Debian và dnf trên RHEL/AlmaLinux/Rocky Linux.

Package manager là gì?
Cách đơn giản nhất để hiểu: package manager giống như App Store trên điện thoại, nhưng dành cho Linux. Thay vì vào website tải file rồi tự cài, bạn chỉ cần gõ một dòng lệnh, package manager sẽ lo hết phần còn lại.
Cụ thể, package manager giúp bạn:
- Cài phần mềm từ kho lưu trữ (repository) chính thức
- Gỡ phần mềm sạch sẽ, kèm cả dependency nếu cần
- Cập nhật toàn bộ phần mềm đã cài chỉ bằng một lệnh
- Xử lý dependency tự động. Ví dụ cài Nginx thì nó tự kéo thêm các thư viện cần thiết, bạn không phải lo
- Tìm kiếm phần mềm theo tên hoặc mô tả
Mỗi họ Linux dùng package manager riêng:
- Ubuntu / Debian dùng
apt(quản lý các file.deb) - AlmaLinux / Rocky Linux / RHEL dùng
dnf(quản lý các file.rpm)
Hai công cụ này khác nhau về cú pháp nhưng ý tưởng thì giống nhau. Mình sẽ đi song song cả hai để bạn dễ so sánh.
Cập nhật danh sách package và nâng cấp hệ thống
Trước khi cài bất cứ thứ gì, bước đầu tiên luôn là cập nhật danh sách package. Bước này giúp hệ thống biết phiên bản mới nhất của các phần mềm có sẵn trong repo.
Trên Ubuntu (apt)
Cập nhật danh sách package:
sudo apt update
Lệnh này không cài hay nâng cấp gì cả. Nó chỉ tải về danh sách package mới nhất từ các repository, giống như refresh lại danh mục trên App Store vậy. Sau khi chạy xong, bạn sẽ thấy thông báo cho biết có bao nhiêu package có thể nâng cấp.
Nâng cấp tất cả package đã cài:
sudo apt upgrade
Lệnh này sẽ tải và cài phiên bản mới cho tất cả package có update. Trước khi cài, nó sẽ liệt kê danh sách các package sẽ được nâng cấp và hỏi bạn xác nhận (nhấn Y để đồng ý). Nếu muốn bỏ qua bước xác nhận, thêm flag -y:
sudo apt upgrade -y
Xem danh sách package nào đang có bản update:
apt list --upgradable
Lưu ý: Thói quen tốt là luôn chạy apt update trước rồi mới apt upgrade. Nếu không update trước, hệ thống sẽ dùng danh sách cũ và có thể bỏ lỡ bản cập nhật mới.
Trên AlmaLinux (dnf)
Kiểm tra xem có package nào cần update không:
dnf check-update
Lệnh này liệt kê tất cả package có phiên bản mới hơn trong repo. Khác với apt update, lệnh này vừa refresh danh sách vừa hiển thị luôn các package có thể nâng cấp.
Nâng cấp toàn bộ:
sudo dnf update -y
Lệnh dnf update tự động refresh metadata repo trước khi nâng cấp, nên bạn không cần chạy bước riêng như apt update. Flag -y để tự động xác nhận.
Cài đặt package
Đây là lệnh bạn sẽ dùng nhiều nhất. Cú pháp đơn giản:
Trên Ubuntu (apt)
sudo apt install nginx
Cài nhiều package cùng lúc, liệt kê tên cách nhau bằng dấu cách:
sudo apt install curl wget htop vim git unzip -y
Trên AlmaLinux (dnf)
sudo dnf install nginx
Tương tự, cài nhiều package:
sudo dnf install curl wget htop vim git unzip -y
Khi cài, package manager sẽ tự động kéo thêm các dependency (thư viện phụ thuộc) cần thiết. Bạn sẽ thấy danh sách tất cả package sẽ được cài trước khi xác nhận.
Gỡ package
Trên Ubuntu (apt)
Gỡ package nhưng giữ lại file config:
sudo apt remove nginx
Gỡ package và xóa luôn file config:
sudo apt purge nginx
Sự khác biệt: remove chỉ xóa file chương trình, các file config trong /etc/ vẫn còn. purge xóa sạch hết. Nếu bạn định cài lại sau thì dùng remove (giữ config cũ). Nếu muốn xóa sạch để cài mới hoàn toàn thì dùng purge.
Dọn các dependency không còn được package nào sử dụng:
sudo apt autoremove -y
Khi bạn gỡ một phần mềm, những dependency mà nó kéo theo lúc cài có thể vẫn nằm trên hệ thống. autoremove sẽ tìm và xóa những package “mồ côi” này.
Trên AlmaLinux (dnf)
sudo dnf remove nginx
dnf không có lệnh purge riêng như apt. Khi dùng dnf remove, nó sẽ gỡ package nhưng thường giữ lại file config. Bạn cần xóa thủ công file config nếu muốn sạch hoàn toàn:
sudo rm -rf /etc/nginx/
dnf có tính năng clean_requirements_on_remove được bật mặc định, nên khi gỡ package, các dependency không dùng nữa sẽ tự động được gỡ theo. Bạn không cần chạy lệnh riêng như autoremove.
Tìm kiếm và xem thông tin package
Không nhớ chính xác tên package? Dùng lệnh search.
Trên Ubuntu (apt)
Tìm package theo từ khóa:
apt search nginx
Lệnh này tìm trong cả tên và mô tả của package. Kết quả có thể khá dài, bạn có thể dùng grep để lọc thêm:
apt search nginx | grep -i "web server"
Xem thông tin chi tiết một package (version, dung lượng, mô tả, dependency…):
apt show nginx
Liệt kê tất cả package đã cài trên hệ thống:
apt list --installed
Danh sách này thường rất dài. Kết hợp với grep để tìm nhanh:
apt list --installed | grep nginx
Trên AlmaLinux (dnf)
Tìm package:
dnf search nginx
Xem thông tin chi tiết:
dnf info nginx
Liệt kê package đã cài:
dnf list installed
Xem lịch sử cài đặt, nâng cấp, gỡ bỏ:
dnf history
Lệnh dnf history rất hữu ích. Nó hiển thị từng “transaction” (mỗi lần bạn cài/gỡ/update), kèm theo thời gian và số package bị ảnh hưởng. Bạn thậm chí có thể undo một transaction nếu cần:
sudo dnf history undo 5
Lệnh trên sẽ hoàn tác transaction số 5. Tính năng này apt không có sẵn.
dnf còn có khái niệm package group, là tập hợp nhiều package liên quan được gom lại thành một nhóm. Ví dụ nhóm “Development Tools” bao gồm gcc, make, và các công cụ build khác:
dnf group list
Cài một group:
sudo dnf group install "Development Tools"
Repository (repo)
Package manager tải phần mềm từ các repository (kho lưu trữ). Mặc định, hệ thống đã có sẵn repo chính thức của distro. Nhưng đôi khi bạn cần thêm repo bên ngoài để cài phần mềm không có trong repo mặc định.
Trên Ubuntu (apt)
Danh sách repo được lưu trong file /etc/apt/sources.list và thư mục /etc/apt/sources.list.d/. Bạn có thể xem nội dung:
cat /etc/apt/sources.list
Ubuntu hỗ trợ PPA (Personal Package Archive), là repo do cộng đồng hoặc nhà phát triển tạo ra. Ví dụ để cài PHP phiên bản mới nhất từ PPA của Ondřej:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.3
Nếu lệnh add-apt-repository không có sẵn, cài thêm:
sudo apt install software-properties-common
Xóa một PPA:
sudo add-apt-repository --remove ppa:ondrej/php
Trên AlmaLinux (dnf)
Các file repo nằm trong thư mục /etc/yum.repos.d/. Mỗi repo là một file .repo:
ls /etc/yum.repos.d/
Repo quan trọng nhất cần biết là EPEL (Extra Packages for Enterprise Linux). Đây là repo cộng đồng cung cấp rất nhiều package bổ sung mà repo mặc định không có:
sudo dnf install epel-release -y
Sau khi cài EPEL, bạn sẽ có thêm hàng nghìn package có thể cài đặt, ví dụ như htop, certbot, và nhiều công cụ khác.
Liệt kê tất cả repo đang được bật:
dnf repolist
Liệt kê cả repo đang tắt:
dnf repolist all
Cài phần mềm phổ biến trên VPS
Dưới đây là các phần mềm hầu như VPS nào cũng cần, kèm lệnh cài cho cả hai distro.
Nginx (web server)
Ubuntu:
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
AlmaLinux:
sudo dnf install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
Các công cụ thường dùng
Ubuntu:
sudo apt install curl wget htop vim git unzip -y
AlmaLinux:
sudo dnf install curl wget htop vim git unzip -y
Giải thích nhanh từng công cụ:
curl/wget: tải file từ internet qua command linehtop: xem tài nguyên hệ thống (CPU, RAM, process) dạng giao diện trực quanvim: text editor mạnh mẽ trong terminalgit: quản lý source codeunzip: giải nén file .zip
Mẹo: Trên AlmaLinux, một số package như htop nằm trong repo EPEL. Nếu dnf install htop báo không tìm thấy, hãy cài epel-release trước.
Giữ package không tự update (Pin/Hold version)
Có lúc bạn muốn giữ nguyên phiên bản của một package, không cho nó tự nâng cấp khi chạy upgrade/update. Ví dụ bạn đang chạy Nginx 1.24 ổn định, không muốn nó tự nhảy lên 1.26 chưa test.
Trên Ubuntu (apt)
Giữ (hold) một package:
sudo apt-mark hold nginx
Kiểm tra danh sách package đang bị hold:
apt-mark showhold
Bỏ hold để cho phép update lại:
sudo apt-mark unhold nginx
Trên AlmaLinux (dnf)
Dùng plugin versionlock:
sudo dnf install dnf-plugin-versionlock -y
Lock phiên bản hiện tại của package:
sudo dnf versionlock add nginx
Xem danh sách package đang bị lock:
dnf versionlock list
Bỏ lock:
sudo dnf versionlock delete nginx
Dọn dẹp disk
Package manager tải file cài đặt (.deb hoặc .rpm) về cache trước khi cài. Theo thời gian, cache này có thể chiếm khá nhiều dung lượng. Dọn dẹp định kỳ là thói quen tốt, đặc biệt trên VPS có disk nhỏ.
Trên Ubuntu (apt)
Xóa các file .deb đã tải trong cache:
sudo apt clean
Lệnh này xóa toàn bộ file trong /var/cache/apt/archives/. Nếu chỉ muốn xóa các file cũ (giữ lại bản mới nhất):
sudo apt autoclean
Kết hợp dọn dependency không dùng:
sudo apt autoremove --purge -y
sudo apt clean
Trên AlmaLinux (dnf)
Xóa toàn bộ cache (metadata + package đã tải):
sudo dnf clean all
Nếu chỉ muốn xóa package đã tải (giữ metadata):
sudo dnf clean packages
Xem cache đang chiếm bao nhiêu dung lượng:
du -sh /var/cache/dnf/
Bảng so sánh apt vs dnf
| Thao tác | apt (Ubuntu) | dnf (AlmaLinux) |
|---|---|---|
| Cập nhật danh sách package | apt update | dnf check-update |
| Nâng cấp tất cả | apt upgrade | dnf update |
| Cài package | apt install pkg | dnf install pkg |
| Gỡ package | apt remove pkg | dnf remove pkg |
| Gỡ + xóa config | apt purge pkg | dnf remove pkg + xóa thủ công |
| Dọn dependency thừa | apt autoremove | Tự động khi remove |
| Tìm package | apt search keyword | dnf search keyword |
| Xem thông tin | apt show pkg | dnf info pkg |
| Liệt kê đã cài | apt list --installed | dnf list installed |
| Xem lịch sử | Không có sẵn | dnf history |
| Hold/Lock version | apt-mark hold pkg | dnf versionlock add pkg |
| Dọn cache | apt clean | dnf clean all |
| Thêm repo | add-apt-repository | Thêm file .repo |
| Repo cộng đồng | PPA | EPEL |
| Undo cài đặt | Không có sẵn | dnf history undo |
Checkpoint: Thực hành với Nginx
Thử áp dụng những gì đã học bằng bài tập nhỏ sau. Chọn phần phù hợp với distro bạn đang dùng.
Trên Ubuntu
# 1. Cập nhật danh sách package
sudo apt update
# 2. Cài Nginx
sudo apt install nginx -y
# 3. Kiểm tra version
nginx -v
# 4. Kiểm tra trạng thái service
sudo systemctl status nginx
# 5. Gỡ Nginx (giữ config)
sudo apt remove nginx -y
# 6. Hoặc gỡ sạch (xóa luôn config)
sudo apt purge nginx -y
# 7. Dọn dependency thừa
sudo apt autoremove -y
# 8. Dọn cache
sudo apt clean
Trên AlmaLinux
# 1. Kiểm tra update
dnf check-update
# 2. Cài Nginx
sudo dnf install nginx -y
# 3. Kiểm tra version
nginx -v
# 4. Kiểm tra trạng thái service
sudo systemctl status nginx
# 5. Gỡ Nginx
sudo dnf remove nginx -y
# 6. Dọn cache
sudo dnf clean all
Nếu cả 8 bước chạy suôn sẻ, bạn đã nắm vững các thao tác cơ bản với package manager rồi. Từ giờ cần cài bất cứ phần mềm gì trên VPS, bạn đều có thể tự xử lý.
Nên nhớ: Luôn ưu tiên cài phần mềm từ repo chính thức hoặc repo uy tín (EPEL, PPA của nhà phát triển). Tránh tải file .deb/.rpm từ nguồn không rõ ràng rồi cài thủ công, vì package manager sẽ không quản lý được dependency và bản cập nhật cho package đó.
Có thể bạn cần xem thêm
- Cập nhật hệ thống tự động trên Linux VPS - unattended-upgrades và dnf-automatic
- Troubleshooting VPS Linux - Cách xủ lý sự cố VPS phổ biến
- Quản lý disk trên Linux VPS - kiểm tra dung lượng, mount, lsblk, fdisk và mở rộng ổ đĩa
- Backup và phục hồi sự cố cho VPS Linux - Kế hoạch toàn diện
- Cấu trúc thư mục Linux - Mọi thứ nằm ở đâu trên VPS
- User, Group và Sudo trên Linux - Quản lý tài khoản VPS
Về tác giả
Trần Thắng
Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.