Quản lý package trên Linux: lab apt, update, rollback và quy trình vá production an toàn

Quản lý package trên Linux không chỉ là chạy apt install. Trên production, mỗi lần update package đều có thể tác động đến service, dependency, bảo mật và thời gian downtime. Vì vậy, SysAdmin cần vừa biết thao tác lệnh, vừa có quy trình kiểm soát thay đổi.

Bài này dùng Ubuntu/Debian làm ví dụ vì phổ biến, nhưng tư duy tương tự áp dụng được cho dnf/yum trên RHEL-family.

1. Các lệnh apt nền tảng

sudo apt update
apt list --upgradable
apt-cache policy nginx
sudo apt install -y nginx
sudo apt remove nginx
sudo apt autoremove

Ý nghĩa:

  • apt update: cập nhật metadata gói
  • apt list --upgradable: xem gói có thể nâng cấp
  • apt-cache policy: kiểm tra phiên bản và repository

2. Tư duy vá production an toàn

  • đọc changelog hoặc advisory nếu là gói quan trọng
  • kiểm tra ảnh hưởng tới service phụ thuộc
  • backup hoặc snapshot trước thay đổi lớn
  • thử trước trên staging/lab nếu có thể
  • có kế hoạch rollback

3. Kiểm tra phiên bản trước và sau khi update

dpkg -l | grep nginx
apt-cache policy openssl

Khi ghi runbook, nên chụp lại phiên bản cũ để dễ truy vết nếu sau update phát sinh lỗi.

4. Cài package và xác minh service

sudo apt update
sudo apt install -y nginx
systemctl status nginx --no-pager
curl -I http://127.0.0.1

Update xong mà không kiểm tra service là một thói quen rất nguy hiểm.

5. Dọn dẹp package không còn dùng

sudo apt autoremove
sudo apt clean

Không nên lạm dụng trên production nếu chưa hiểu package nào đang được giữ lại. Hãy đọc kỹ danh sách trước khi xác nhận.

6. Rollback hoặc pin version khi cần

Không phải gói nào cũng rollback đơn giản, nhưng cần biết hướng xử lý:

apt-cache madison nginx
sudo apt install nginx=1.24.0-2ubuntu1
sudo apt-mark hold nginx

apt-mark hold hữu ích khi tạm chặn nâng cấp một package đang gây lỗi tương thích.

7. Lab step-by-step

  1. Chạy sudo apt update.
  2. Liệt kê gói có thể nâng cấp.
  3. Cài Nginx hoặc một package đơn giản.
  4. Kiểm tra phiên bản bằng dpkg -l hoặc apt-cache policy.
  5. Kiểm tra service sau cài đặt.
  6. Tìm các phiên bản có sẵn của package và thử giữ version bằng apt-mark hold trong lab.

8. Lỗi thường gặp

  • update package trên production mà không có maintenance window
  • không kiểm tra dependency bị kéo theo
  • không xem service sau khi update xong
  • trộn repository không rõ nguồn gốc

9. Tài liệu chính thống

10. Checklist production

  • đã có danh sách package sắp thay đổi
  • đã xác định service chịu ảnh hưởng
  • đã có backup/snapshot khi cần
  • đã kiểm tra health sau cập nhật
  • đã lưu thông tin phiên bản trước và sau thay đổi

11. Phân biệt update thường, security patch và thay đổi lớn

  • Update thường: vá lỗi nhỏ hoặc nâng bản ổn định hơn.
  • Security patch: cần ưu tiên hơn nhưng vẫn phải kiểm tra tác động tới service.
  • Thay đổi lớn: đổi major version, dependency quan trọng hoặc thay đổi hành vi package.

Ba loại thay đổi này không nên có cùng cách xử lý. Security patch có thể cần nhanh, nhưng major upgrade thì nên thận trọng hơn nhiều.

12. Phân biệt upgrade và full-upgrade

sudo apt upgrade
sudo apt full-upgrade

upgrade thận trọng hơn, còn full-upgrade có thể thêm hoặc gỡ package để giải quyết dependency. Trên production, anh nên hiểu rõ trước khi dùng loại thứ hai.

13. Runbook vá một package production an toàn

  1. xác định package nào cần vá và lý do vá
  2. đọc version hiện tại, version mục tiêu và dependency liên quan
  3. kiểm tra service nào phụ thuộc
  4. backup hoặc snapshot nếu thay đổi có rủi ro
  5. thực hiện update trong maintenance window phù hợp
  6. xác minh service, port, log và health check sau update
  7. ghi lại version trước và sau thay đổi

14. Case thực tế: update xong service vẫn cài nhưng không chạy

Một lỗi hay gặp là package cài thành công nhưng file cấu hình cũ không còn tương thích hoặc dependency kèm theo bị thay đổi. Vì vậy, xác minh sau update luôn cần ít nhất:

systemctl status nginx --no-pager
journalctl -u nginx -n 50 --no-pager
curl -I http://127.0.0.1

Không nên xem status cài package thành công là đủ.

Kết luận: học đúng Quản lý package trên Linux sẽ giúp anh vá lỗi và cập nhật bảo mật có kiểm soát, thay vì “update xong rồi cầu may”.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *