Sau bài này bạn làm được: đọc nguồn package và priority; giữ phiên bản quan trọng (apt-mark hold / versionlock); thiết kế cadence patch (security vs feature); cân nhắc unattended-upgrades trên server một cách có trách nhiệm; hiểu vì sao “chỉ apt upgrade” không đủ cho đội vận hành.
Package manager là hợp đồng tin cậy với distro
Debian/Ubuntu — apt:
sudo apt update
apt-cache policy nginx
sudo apt install -y nginx=1.24.0-*
apt-mark showhold
RHEL family — dnf / yum:
dnf list available nginx
sudo dnf install nginx-1.26.*
sudo dnf versionlock nginx # plugin
Bài học ops: “cùng tên package” khác phiên bản giữa distro — đừng copy số version từ blog sang production mù.
Repository: official, PPA, vendor repo
- Official / distro mirror: nguồn vá security chính.
- PPA / COPR / third-party: tiện nhưng tăng supply chain surface — cần owner và quy trình rotate key.
ls /etc/apt/sources.list.d/
ls /etc/yum.repos.d/
Pinning / priority (Debian) — khi bạn cần “lấy nginx mới hơn nhưng không upgrade cả thế giới”
APT pinning (/etc/apt/preferences.d/) điều khiển candidate version khi có nhiều repo cung cấp cùng package.
Footgun: pin sai có thể giữ bản cũ lỗi hoặc kéo bản quá mới phá dependency.
unattended-upgrades vs maintenance window
Unattended-upgrades (Debian family):
- Ưu: vá nhanh CVE nhỏ không cần người.
- Nhược: reboot không kiểm soát nếu cấu hình lỏng; logrotate + service restart có thể gây nháy availability.
Orchestrated maintenance:
- Patch theo lịch; drain LB; snapshot; apply; verify health; un-drain.
Không có đáp án đúng duy nhất — có SLA và đội ngủ quyết định.
Kernel update: không chỉ là “một package”
Kernel mới cần reboot (trừ livepatch/kpatch trong phạm vi hỗ trợ). Cloud provider đôi khi đưa “kernel hot” nhưng bạn vẫn cần policy reboot.
uname -r
# So với meta package linux-image-* đã cài trên Debian
dpkg -l 'linux-image-*' | tail
needrestart / checkrestart — sau upgrade, process nào vẫn dùng binary cũ?
sudo needrestart # Debian/Ubuntu nếu cài
Điển hình: libssl upgrade nhưng nginx chưa restart → bạn đã patch disk nhưng chưa patch memory.
Reproducibility: image, cloud-init, lock file
- Golden image + version tag.
- cloud-init/
ignitionchạy một lần bootstrap — log secret cẩn thận. - Container: pin digest image, không chỉ tag
latest.
Rollback mindset
Package downgrade không luôn được hỗ trợ an toàn (schema DB, migration một chiều). Ops thường rollback bằng:
- snapshot volume trước major upgrade
- blue/green deployment thay vì inplace downgrade
Liên hệ bài trước / sau
- Trước: Phần 7: Lưu trữ
- Sau: Phần 9: Firewall
Câu hỏi hay gặp
1. “apt upgrade vs apt full-upgrade?”full-upgrade có thể gỡ package để giải dependency — nguy hiểm hơn trên server không được kiểm soát; đọc diff trước.
2. “Tôi có nên tự build từ source trên prod?”
Chỉ khi bạn có pipeline tái lập được và owner rõ — nếu không, bạn đang tạo snowflake.
3. “CVE báo HIGH nhưng distro chưa có fix?”
Theo dõi USN/RHSA; đôi khi mitigation là config (tắt module) chứ không phải version bump.
Bài tiếp theo trong loạt
→ Phần 9: Firewall trên Linux — tư duy và thực hành — default deny và quy tắc tối thiểu.