Bạn đã bao giờ rơi vào cảnh vừa cài xong vài package thử nghiệm thì hệ thống bắt đầu xung đột chưa? Tệ hơn nữa, sau một lệnh sudo dnf upgrade, driver NVIDIA bỗng nhiên “lăn đùng ra chết” khiến màn hình đen xì. Thay vì cuống cuồng cài lại máy hoặc ngồi gỡ từng gói thủ công, người dùng Fedora lâu năm thường chọn cách dùng dnf history — một công cụ cực kỳ hữu ích giúp bạn quay ngược thời gian.
Sau 2 năm dùng Fedora làm máy làm việc chính, mình nhận thấy tốc độ cập nhật package nhanh là một điểm cộng, nhưng đôi khi nó lại làm gãy workflow. Những lúc như vậy, dnf history chính là cứu cánh giúp mình đưa hệ thống về trạng thái ổn định chỉ sau vài câu lệnh đơn giản.
Cách cứu nguy hệ thống trong 30 giây
Nếu bạn đang cần hoàn tác gấp một thao tác vừa thực hiện, hãy làm theo 3 bước sau:
- Liệt kê các thao tác gần đây:
sudo dnf historyBạn sẽ thấy một bảng danh sách. Hãy nhìn vào cột ID ở ngoài cùng bên trái để xác định phiên làm việc muốn xử lý.
- Kiểm tra xem ID đó đã làm gì (ví dụ ID 42):
sudo dnf history info 42DNF sẽ liệt kê chi tiết 42 gói đã được thêm vào hoặc loại bỏ trong lần đó.
- Hoàn tác (Undo) ngay lập tức:
sudo dnf history undo 42Hệ thống sẽ tự động tính toán để gỡ bỏ những gì đã cài thêm hoặc bù lại những gì đã xóa ở bước 42.
Cơ chế hoạt động của dnf history
DNF không chỉ cài đặt file đơn thuần. Mỗi khi bạn chạy lệnh thay đổi hệ thống, DNF tạo ra một Transaction (giao dịch). Mọi chi tiết từ danh sách gói phụ thuộc (dependencies) đến thời gian thực hiện đều được lưu vào database SQLite tại /var/lib/dnf/history.sqlite.
Giải mã các ký hiệu trong cột Action
Khi gõ sudo dnf history list, bạn cần chú ý các ký tự viết tắt để biết chuyện gì đã xảy ra:
- I (Install): Cài mới hoàn toàn.
- U (Update): Nâng cấp lên bản mới.
- E (Erase): Gỡ bỏ khỏi máy.
- D (Downgrade): Hạ cấp về bản cũ.
Lưu ý nhỏ: Nếu thấy dấu * cạnh Action, nghĩa là giao dịch đó bị ngắt quãng giữa chừng, có thể do máy sập nguồn hoặc bạn lỡ tay nhấn Ctrl+C.
Phân biệt Undo và Rollback: Dùng sao cho đúng?
Rất nhiều người nhầm lẫn giữa hai lệnh này, nhưng cách chúng tác động lên hệ thống lại khác nhau hoàn toàn.
1. dnf history undo
Lệnh này chỉ tập trung vào một giao dịch duy nhất. Nếu bạn cài httpd ở ID 20, undo 20 sẽ gỡ nó ra. Nó hoàn toàn không đụng chạm đến những gì bạn đã cài ở ID 21 hay 22.
2. dnf history rollback
Đây mới thực sự là lệnh đưa bạn về quá khứ. Khi dùng rollback 15, hệ thống sẽ xóa/cài lại mọi thứ để máy quay về đúng trạng thái tại thời điểm ID 15. Tất cả các thay đổi từ ID 16 đến nay sẽ bị hủy bỏ.
Mẹo nhỏ: Rollback có thể thất bại nếu cache của bạn bị xóa sạch hoặc các repo cũ không còn khả dụng.
Mẹo quản lý lịch sử cho người dùng nâng cao
Đừng để danh sách history dài dằng dặc làm bạn rối mắt. Hãy thử các cách lọc thông tin sau:
Truy tìm lịch sử của một gói cụ thể: Bạn muốn biết nginx đã được cập nhật khi nào? Gõ ngay:
sudo dnf history list nginx
Lọc những gói bạn trực tiếp cài: Thay vì xem hàng ngàn dependencies rác, lệnh sau chỉ hiện những gì bạn chủ động gõ lệnh cài:
sudo dnf history userinstalled
Kinh nghiệm thực tế từ “chiến trường” Fedora
Để việc sử dụng dnf history mượt mà nhất, mình có vài lời khuyên cho anh em:
- Hạn chế dọn cache quá đà: Đừng lạm dụng
sudo dnf clean all. Metadata trong cache cực kỳ quan trọng để DNF thực hiệnundothành công. Nếu ổ cứng còn dư dả, hãy giữ lại cache để dự phòng. - Soi kỹ trước khi hành động: Luôn chạy
dnf history infotrước khi gõ lệnh undo. Nếu thấy giao dịch đó liên quan đếnkernelhoặcglibc, hãy cực kỳ cẩn trọng vì nó có thể khiến máy không boot được. - Chú ý Repositories bên thứ ba: Nếu bạn cài app từ RPM Fusion rồi tắt repo đó đi, lệnh
undosẽ báo lỗi. Hãy đảm bảo các repo liên quan vẫn đang hoạt động.
Nắm vững dnf history giúp bạn tự tin hơn hẳn khi thử nghiệm các công cụ mới trên Fedora. Bạn không còn phải sợ hãi mỗi khi gõ lệnh, vì luôn biết chắc mình có một đường lui an toàn. Hy vọng thủ thuật này giúp việc quản lý hệ thống của bạn nhàn tênh.

