Mọi thứ cần biết về trình quản lý gói DNF

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.

Terminal hiển thị chi tiết về kho lưu trữ Fedora DNF.
Terminal hiển thị chi tiết về kho lưu trữ Fedora DNF.

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
Màn hình cài đặt DNF
Màn hình cài đặt DNF

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.

Terminal hiển thị màn hình cài đặt cho Emacs mà không có bất kỳ dependency nào.
Terminal hiển thị màn hình cài đặt cho Emacs mà không có bất kỳ dependency nào.

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
Terminal hiển thị quá trình cài đặt DNF cho các file RPM.
Terminal hiển thị quá trình cài đặt DNF cho các file 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
Terminal hiển thị quá trình cài đặt lại GNU Nano trong DNF.
Terminal hiển thị quá trình cài đặt lại GNU Nano trong DNF.

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
Terminal hiển thị các nhóm gói DNF có sẵn cho Fedora 40.
Terminal hiển thị các nhóm gói DNF có sẵn cho Fedora 40.

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.

Terminal hiển thị thông tin chi tiết về nhóm gói Editors trong DNF.
Terminal hiển thị thông tin chi tiết về nhóm gói Editors trong DNF.

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
Terminal hiển thị lời nhắc cài đặt cho nhóm gói Editors.
Terminal hiển thị lời nhắc cài đặt cho nhóm gói 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
Terminal hiển thị lời nhắc gỡ cài đặt cho nhóm gói Editors.
Terminal hiển thị lời nhắc gỡ cài đặt cho nhóm gói 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
Tìm kiếm DNF cho GNU Nano.
Tìm kiếm DNF cho GNU 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
Kết quả khớp hoàn toàn cho tìm kiếm DNF.
Kết quả khớp hoàn toàn cho tìm kiếm DNF.

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
Gói Emacs có sẵn ở định dạng NEVRA.
Gói Emacs có sẵn ở định dạng NEVRA.

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
Các dependency của gói cho Emacs trong DNF.
Các dependency của gói cho Emacs trong DNF.

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
Danh sách các gói có sẵn dưới dạng DNF list.
Danh sách các gói có sẵn dưới dạng DNF list.

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
Danh sách các bản nâng cấp có sẵn cho hệ thống Fedora 40 trong DNF.
Danh sách các bản nâng cấp có sẵn cho hệ thống Fedora 40 trong DNF.

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
Đầu ra của lệnh nâng cấp DNF.
Đầu ra của lệnh nâng cấp DNF.

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
Lời nhắc nâng cấp tối thiểu cho DNF.
Lời nhắc nâng cấp tối thiểu cho DNF.

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
Lời nhắc nâng cấp có chọn lọc cho Emacs.
Lời nhắc nâng cấp có chọn lọc cho Emacs.

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--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
Thứ Bảy, 24/08/2024 07:30
53 👨 225
0 Bình luận
Sắp xếp theo
    ❖ Linux