Dandified Yum (DNF) là một giao diện người dùng quản lý gói mạnh mẽ dành cho các bản phân phối Linux dựa trên RPM. Bài viết sau đây sẽ chỉ cho bạn mọi thứ cần biết về trình quản lý gói DNF và các lệnh DNF khác nhau có thể sử dụng để quản lý các gói của mình.
Tại sao nên sử dụng trình quản lý gói DNF?
Nhiều bản phân phối Linux, chẳng hạn như Red Hat Enterprise Linux, CentOS Stream và Fedora Linux có kho lưu trữ riêng sử dụng file RPM Package Manager (RPM) để phân phối chương trình, tài liệu và thư viện. Đó là định dạng lưu trữ nén có thể chạy script, xác minh nội dung bên trong và lưu trữ siêu dữ liệu gói.
Một nhược điểm của RPM là nó không thể cài đặt gói trừ khi các điều kiện tiên quyết của nó có trong hệ thống. DNF thu hẹp khoảng cách này bằng cách tìm nạp các dependency cần thiết cho gói và giải quyết mọi xung đột phần mềm trong quá trình cài đặt.
Ngoài ra, DNF còn cung cấp các công cụ bổ sung để cài đặt và quản lý những gói trong hệ thống. Nó bao gồm khả năng thêm các kho lưu trữ bên ngoài, tìm kiếm nội dung từ xa, cũng như hỗ trợ khôi phục và dọn dẹp hệ thống thích hợp.
Cài đặt gói bằng DNF
Cài đặt gói là chức năng cơ bản của mọi trình quản lý gói. Để cài đặt gói từ xa trong DNF, hãy chạy dnf install theo sau là tên gói:
sudo dnf install nano
Lệnh install có một số flag cho phép thay đổi hành vi mặc định của nó. Ví dụ, có thể bao gồm --setopt=install_weak_deps=False để bỏ qua “Weak Dependencies” khi cài đặt một chương trình.
Tìm nạp và cài đặt file RPM bằng DNF
DNF cũng có thể tìm nạp các gói .rpm trống từ kho lưu trữ upstream. Điều này có thể hữu ích nếu bạn đang thiết lập một máy ngoại tuyến và muốn sideload các gói RPM vào máy đó.
sudo dnf download emacs
Bạn thậm chí có thể sử dụng lệnh install trên file .rpm để cài đặt nó vào máy. Làm điều này sẽ mang lại lợi ích của việc giải quyết dependency cho các gói không phải repo.
sudo dnf install ~/your-package.rpm
Cài đặt lại các gói hiện có
Hơn nữa, DNF có thể buộc cài đặt lại các chương trình trong máy hiện tại. Điều này có thể hữu ích nếu bạn gặp sự cố với gói hiện có và muốn đảm bảo rằng mình đã cài đặt gói đó đúng cách.
sudo dnf reinstall nano
Lệnh reinstall cũng có một số flag tùy chọn để sửa đổi hành vi của nó. Ví dụ, flag --allowerasing sẽ xóa mọi xung đột dependency tiềm ẩn ngay khi cài đặt lại chương trình.
Xử lý nhóm gói trong DNF
Nhóm gói là một tính năng DNF đặc biệt để cài đặt các chương trình xung quanh một chủ đề hoặc công cụ. Điều này có thể hữu ích nếu muốn thiết lập một bản build desktop nhất quán hoặc quản lý bộ sưu tập phần mềm.
Để xem các nhóm gói có sẵn cho hệ thống, hãy chạy lệnh sau:
dnf group list
Có thể kiểm tra nội dung của nhóm gói bằng cách chạy đối số info sau lệnh group. Ví dụ, chạy dnf groups info Editors sẽ in một mô tả ngắn về nhóm và các gói mà nhóm sẽ cài đặt.
Cài đặt và gỡ bỏ nhóm gói
Lệnh group cũng xử lý quá trình cài đặt riêng của nó. Chạy lệnh group với đối số install, sau đó cung cấp tên nhóm mà bạn muốn cho hệ thống của mình:
sudo dnf group install Editors
Để xóa toàn bộ nhóm gói, hãy thay thế đối số install bằng remove theo sau là tên của nhóm mà bạn muốn xóa:
sudo dnf group remove Editors
Tìm kiếm các gói có sẵn
Một tính năng quan trọng của mọi trình quản lý gói là khả năng xem qua các kho lưu trữ từ xa để tìm những chương trình có sẵn. Để thực hiện việc này trong DNF, hãy sử dụng lệnh con search:
dnf search nano
Theo mặc định, DNF khớp truy vấn tìm kiếm của bạn với cả tên gói từ xa và bản tóm tắt ngắn gọn của nó. Bạn có thể thay đổi hành vi này để bao gồm tất cả các trường siêu dữ liệu có sẵn bằng cách thêm flag --all:
dnf search --all nano
Tìm kiếm gói nâng cao trong DNF
Ngoài “search”, DNF còn đi kèm với lệnh phụ repoquery cho phép tìm kiếm các gói và in chúng ở định dạng “NEVRA”. Điều này hữu ích nếu bạn đang tạo một script sẽ cài đặt các gói cụ thể bằng DNF và RPM.
Lệnh sau in tất cả các gói “emacs” có sẵn cho Fedora 40 ở định dạng NEVRA:
dnf repoquery emacs
Ngoài ra, lệnh phụ repoquery còn có các flag lọc bổ sung mà bạn có thể sử dụng để tinh chỉnh các tìm kiếm gói của mình. Ví dụ, flag --installed sẽ chỉ hiển thị các gói trên máy của bạn và --depends sẽ in các dependency của gói đó:
dnf repoquery --installed --depends emacs
Tìm nạp danh sách gói trong DNF
Lệnh con list là một cách linh hoạt để duyệt qua các gói DNF có sẵn từ máy cục bộ và những kho lưu trữ từ xa. Ví dụ, lệnh sau liệt kê tất cả các gói đã cài đặt trong hệ thống.
dnf list --installed
Tương tự như repoquery, lệnh con list có thể lấy các flag lọc bổ sung, chẳng hạn như --recent, sẽ in các gói gần đây nhất có sẵn trên những kho lưu trữ từ xa.
dnf list --recent
Hơn nữa, lệnh con list cũng có thể là một công cụ hữu ích để kiểm tra nhanh các bản nâng cấp có sẵn cho hệ thống:
dnf list --upgrades
Tính năng này cũng mở rộng cho các lệnh con định hướng bảo trì của DNF. Ví dụ, flag --autoremove liệt kê tất cả những dependency treo trên hệ thống:
dnf list --autoremove
Nâng cấp các gói hệ thống
Với DNF, bạn có thể nâng cấp tất cả các gói đã cài đặt bằng một lệnh phụ: upgrade. Điều này có nghĩa là việc nâng cấp hệ thống luôn có nghĩa là bạn sẽ nhận được phiên bản mới nhất có sẵn của các gói của mình:
sudo dnf upgrade
Nếu bạn chỉ muốn kiểm tra các bản cập nhật, hãy sử dụng lệnh phụ check-update thay thế:
sudo dnf check-update
Chạy các bản nâng cấp hệ thống tối thiểu
Ngoài ra, DNF có thể thực hiện "nâng cấp bảo thủ" trong đó nó sẽ chỉ cài đặt các bản sửa lỗi bảo mật và lỗi cho những chương trình hiện có. Điều này hữu ích khi bạn đang chạy một service quan trọng và bạn không muốn đưa các thay đổi đột ngột vào máy:
sudo dnf upgrade-minimal
Nâng cấp và hạ cấp từng gói riêng lẻ
Nói như vậy, bạn có thể nâng cấp từng gói riêng lẻ bằng cách cung cấp tên của chúng sau lệnh nâng cấp. Ví dụ, lệnh sau sẽ cập nhật GNU Emacs lên phiên bản 29.3 trong Fedora 40:
sudo dnf upgrade emacs-1:29.3-6.fc40.x86_64
Mặt khác, DNF cũng hỗ trợ hạ cấp các gói miễn là có phiên bản thấp hơn trong kho lưu trữ từ xa hiện đang hoạt động:
sudo dnf downgrade emacs
Lưu ý: Chạy lệnh downgrade sẽ hạ số phiên bản của bất kỳ gói nào là phụ thuộc cứng vào chương trình của bạn.
Sử dụng Security Advisories để nâng cấp các gói
Security Advisories là một phần quan trọng để cập nhật các lỗ hổng phần mềm mới nhất. Để đạt được mục đích này, DNF cung cấp các flag --advisory và --cve chấp nhận code Security Advisories Fedora và số ID CVE.
Ví dụ, lệnh sau nâng cấp thư viện xz trong hệ thống Fedora 40 để giải quyết lỗ hổng bảo mật nghiêm trọng:
sudo dnf upgrade --refresh --advisory=FEDORA-2024-d02c7bb266