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độ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/ignition chạ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


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.