Trên Fedora 44, dnf chính là dnf5
Lệnh dnf trên Fedora 44 là dnf5. Có thể xác nhận như sau:
dnf --version
Trong container Fedora 44 của tôi, đầu ra là dnf5 version 5.4.3.0. Mọi lệnh và đầu ra trong bài đều được chạy trong container này, kiến trúc là aarch64. Số phiên bản hệ thống tra bằng lệnh này:
rpm -E %fedora
Nếu đầu ra là 44 thì đó là Fedora 44. Tệp cấu hình chính là /etc/dnf/dnf.conf, các định nghĩa kho nằm trong /etc/yum.repos.d/. Để biết kho nào đang được bật, xem đầu ra của lệnh này:
dnf repolist
Trong container của tôi, các kho mặc định được bật là fedora, fedora-cisco-openh264 và updates, còn updates-testing không được bật. Trên máy của bạn, hãy lấy đầu ra thực tế làm chuẩn.
Về các kho bên thứ ba cài sau khi dựng máy, cũng như cấu hình dạng driver, một bài khác trên site đã đề cập rồi, ở đây không lặp lại; bài này chỉ nói về cách quản lý phần mềm hằng ngày sau khi đã cài xong, và cách quay lui khi có vấn đề.
Cài đặt, tìm kiếm, tra cứu
Cài đặt cần sudo, còn tìm kiếm và tra cứu thì không:
sudo dnf install htop
dnf search htop
dnf info htop
Kết quả của dnf search sẽ ghi rõ trường nào khớp. Matched fields: name (exact) là gói có tên khớp hoàn toàn, Matched fields: name là gói có tên chứa từ đó; khi tìm htop, loại sau sẽ kéo theo pcp-htop. dnf info sẽ liệt kê các trường Name, Version, Release, Architecture, Installed size, Source.
Nhóm phần mềm xem bằng dnf group list, liệt kê ID, Name và trạng thái đã cài hay chưa, ví dụ office (Office/Productivity), kde-education, kde-media.
Nâng cấp hằng ngày:
sudo dnf upgrade
Vài tùy chọn thường dùng, đều tra được trong dnf upgrade --help:
--minimal: chỉ nâng lên phiên bản tối thiểu đủ để vá các loại thông báo bugfix, enhancement, security, newpackage.--allowerasing: cho phép xóa các gói đã cài để hóa giải xung đột. Trước khi chạy, hãy đọc tóm tắt giao dịch và xác nhận các gói sắp bị xóa là bạn không dùng đến.--skip-unavailable: bỏ qua các gói không khả dụng.--from-repo=REPO_ID: chỉ chọn gói từ kho được chỉ định.
Lịch sử giao dịch và quay lui
dnf5 ghi lại mỗi lần cài đặt, nâng cấp, xóa thành một giao dịch:
dnf history list
Trong danh sách có ID giao dịch, dòng lệnh đã chạy, thời gian và số thay đổi. Tôi đã chạy dnf -y install htop trong container, nó được ghi thành một giao dịch với 2 thay đổi: htop và hwloc-libs là gói phụ thuộc. Chi tiết xem bằng:
dnf history info 3
Sẽ thấy trạng thái giao dịch, Releasever đã dùng, và trong Packages altered là hành động, lý do và kho nguồn của từng gói. Lý do của htop là User, của hwloc-libs là Dependency.
Để hủy một thao tác, dùng undo:
sudo dnf history undo 3
Tôi đã chạy thật: nó xóa cả htop lẫn hwloc-libs, hệ thống quay về trạng thái trước khi cài. history còn có các lệnh con sau:
redo: lặp lại các thao tác của giao dịch chỉ định.rollback: hủy mọi giao dịch đã thực hiện sau giao dịch chỉ định. Lưu ý phạm vi rộng hơnundo.store: hướng dẫn ghi là experimental, đừng dựa vào nó trong môi trường sản xuất.
Dọn dẹp và kiểm tra khởi động lại
Xóa các gói không còn được gói khác phụ thuộc:
sudo dnf autoremove
Nó có tùy chọn --offline, lưu giao dịch lại để thực hiện lúc khởi động lại, nguyên lý giống hệ thống nâng cấp hệ thống ở dưới.
Sau khi nâng cấp thư viện, các tiến trình đang chạy vẫn dùng thư viện cũ. needs-restarting giúp tìm ra các tiến trình và dịch vụ đó:
dnf needs-restarting
-s,--services: liệt kê các dịch vụ systemd đã khởi động trước khi phần phụ thuộc được cập nhật.-p,--processes: liệt kê các tiến trình đã khởi động trước khi phần phụ thuộc được cập nhật.-e,--exclude-services: dùng cùng--processes, loại trừ các tiến trình do dịch vụ systemd quản lý.-r,--reboothint: không có tác dụng trong dnf5, chỉ được giữ để tương thích với DNF 4. Chức năng củaneeds-restarting -rtrong DNF 4 chính là hành vi hiện tại củadnf5 needs-restarting.
Nâng cấp offline lên bản lớn mới
Thời DNF 4 phải cài trước plugin dnf-plugin-system-upgrade. Trên Fedora 44, system-upgrade đã được tích hợp sẵn trong DNF5, không cần cài thêm. Quy trình nâng cấp offline gồm ba lệnh:
sudo dnf upgrade --refresh
sudo dnf system-upgrade download --releasever=<VERSION>
sudo dnf system-upgrade reboot
Lệnh thứ nhất nâng phiên bản hiện tại lên mới nhất và làm mới siêu dữ liệu. Lệnh thứ hai tải mọi thứ cần để nâng cấp lên phiên bản đích, sau --releasever điền số phiên bản đích. Lệnh thứ ba chuẩn bị giao dịch offline và khởi động lại; hệ thống hoàn tất việc nâng cấp trong giai đoạn khởi động sau khi reboot.
system-upgrade còn có ba lệnh con phụ trợ:
status: hiển thị trạng thái giao dịch offline hiện tại. Nếu không có, đầu ra làNo offline transaction is stored.log: hiển thị nhật ký các giao dịch offline trong quá khứ.clean: xóa giao dịch offline đã lưu và các gói phần mềm trong bộ nhớ đệm. Nó sẽ xóa những gì đã tải xuống, hãy xác nhận lần tải này không cần giữ lại trước khi chạy.
Trước khi tiến hành nâng cấp bản lớn, hãy đối chiếu với tài liệu nâng cấp offline chính thức của Fedora để xác nhận các điều kiện tiên quyết và lưu ý. Các lệnh và danh sách lệnh con ở trên lấy từ đầu ra hướng dẫn thấy trong container Fedora 44, không trích nguyên văn từ tài liệu chính thức.
Cách quay lui khi có lỗi
Sau một lần cài đặt hoặc nâng cấp mà thấy không ổn, trước hết xem lịch sử để tìm ID của giao dịch đó, rồi undo:
dnf history list
dnf history info <ID giao dịch>
sudo dnf history undo <ID giao dịch>
history info cho phép bạn thấy rõ giao dịch đó đã động đến gói nào trước khi hủy.
Nếu sau --allowerasing phát hiện xóa nhiều quá, cũng có thể dùng undo để hủy giao dịch đó. Muốn quay về trạng thái sớm hơn, dùng rollback; nó sẽ hủy mọi giao dịch sau giao dịch chỉ định, nên hãy xem kỹ bằng dnf history list trước để biết nó sẽ ảnh hưởng đến những bản ghi nào.



