Lệnh DNF hay còn gọi là Dandified YUM là một trình quản lý gói thế hệ tiếp theo cho các Hệ điều hành dựa trên RPM. Nó được giới thiệu lần đầu trong Fedora 18 và đã thay thế tiện ích YUM trong phiên bản mới nhất của Fedora 22.

DNF nhằm mục tiêu cải thiện nhược điểm của YUM như Hiệu suất, Sử dụng Bộ nhớ, Giải quyết phụ thuộc, Tốc độ và nhiều yếu tố khác. DNF thực hiện Quản lý Gói bằng cách sử dụng RPM, thư viện libsolv và hawkey. Mặc dù không được cài đặt sẵn trong CentOS và RHEL 7, bạn có thể sử dụng yum, dnf và sử dụng chúng cùng với yum.
Phiên bản mới nhất của DNF là 1.0 (tại thời điểm viết bài viết) được phát hành vào 11 tháng 5 năm 2015. Nó (và tất cả các phiên bản trước của DNF) chủ yếu được viết bằng Python và được phát hành theo GPL v2 License.
Cài đặt DNF
DNF không có sẵn trong kho lưu trữ mặc định của RHEL / CentOS 7. Tuy nhiên, Fedora 22 có sẵn DNF được triển khai chính thức.
Để cài đặt DNF trên hệ thống RHEL / CentOS, bạn cần cài đặt và kích hoạt kho lưu trữ epel-release trước.
# yum install epel-release
OR
# yum install epel-release -y
Tuy không đạo đức khi sử dụng ‘-y‘ với yum vì nó được khuyến nghị để xem các gói đã được cài đặt trong hệ thống của bạn. Tuy nhiên, nếu điều này không quan trọng lắm đối với bạn, bạn có thể sử dụng ‘-y’ với yum để tự động cài đặt mọi thứ mà không cần can thiệp của người dùng.
Sau đó, cài đặt gói DNF bằng lệnh yum từ kho lưu trữ epel-release.
# yum install dnf
Sau khi cài đặt thành công dnf, đã đến lúc bạn xem 27 cách sử dụng thực tế của lệnh dnf với các ví dụ sẽ giúp bạn quản lý các gói trên hệ điều hành dựa trên RPM một cách dễ dàng và hiệu quả.
Các ví dụ ứng dụng của lệnh DNF
1. Kiểm tra phiên bản DNF
Kiểm tra phiên bản DNF đã được cài đặt trên hệ thống của bạn.
# dnf --version
2. Liệt kê các kho DNF được bật
Tùy chọn ‘repolist‘ với lệnh dnf sẽ hiển thị tất cả các kho được bật trong hệ thống của bạn.
# dnf repolist
3. Liệt kê tất cả các kho DNF đã bật và không bật
Tùy chọn ‘repolist all‘ sẽ hiển thị tất cả các kho đã bật / không bật trong hệ thống của bạn.
# dnf repolist all
4. Liệt kê tất cả các gói có sẵn và đã cài đặt bằng DNF
Lệnh “dnf list” sẽ liệt kê tất cả các gói có sẵn từ tất cả các kho và các gói đã cài đặt trên hệ thống Linux của bạn.
# dnf list
5. Liệt kê tất cả các gói đã cài đặt bằng DNF
Trong khi lệnh “dnf list” hiển thị tất cả các gói có sẵn / đã cài đặt từ tất cả các kho. Tuy nhiên, bạn có thể chỉ liệt kê các gói đã cài đặt bằng tùy chọn “list installed” như dưới đây.
# dnf list installed

6. Liệt kê tất cả các gói có sẵn bằng DNF
Tương tự, tùy chọn “list available” sẽ liệt kê tất cả các gói có sẵn để cài đặt từ tất cả các kho đã được bật.
# dnf list available

7. Tìm kiếm một gói sử dụng DNF
Trong trường hợp bạn không biết về gói mà bạn muốn cài đặt, trong tình huống như vậy, bạn có thể sử dụng tùy chọn ‘search‘ với lệnh dnf để tìm kiếm các gói phù hợp với từ hoặc chuỗi tìm kiếm (như nano).
# dnf search nano
8. Xem thông tin cung cấp bởi một file/gói phụ
Tùy chọn dnf “provides” tìm tên gói cung cấp file/gói phụ cụ thể. Ví dụ, nếu bạn muốn tìm xem điều gì cung cấp ‘/bin/bash‘ trên hệ thống của bạn?
# dnf provides /bin/bash
9. Lấy thông tin của một gói sử dụng DNF
Hãy giả sử bạn muốn biết thông tin của một gói trước khi cài đặt nó trên hệ thống, bạn có thể sử dụng cú pháp“info” để xem thông tin chi tiết về một gói (như nano) như dưới đây.
# dnf info nano
10. Cài đặt một gói bằng DNF
Để cài đặt gói có tên là nano, chỉ cần chạy lệnh dưới đây và nó sẽ tự động giải quyết và cài đặt tất cả các phụ thuộc cần thiết cho gói nano.
# dnf install nano
11. Cập nhật gói bằng DNF
Bạn có thể cập nhật chỉ một gói cụ thể (như systemd) và để nguyên tất cả các gói khác trên hệ thống.
# dnf update systemd
12. Kiểm tra cập nhật hệ thống bằng DNF
Kiểm tra các cập nhật cho tất cả các gói hệ thống đã cài đặt vào hệ thống chỉ đơn giản là.
# dnf check-update
13. Cập nhật tất cả các gói hệ thống bằng DNF
Bạn có thể cập nhật toàn bộ hệ thống bao gồm tất cả các gói đã cài đặt với các lệnh sau.
# dnf update
OR
# dnf upgrade
14. Xóa/Gỡ cài đặt một gói bằng DNF
Để xóa hoặc gỡ bỏ bất kỳ gói không mong muốn nào (như nano), bạn có thể sử dụng các lệnh “remove” hoặc “erase” với lệnh dnf để loại bỏ chúng.
# dnf remove nano
OR
# dnf erase nano
15. Xóa các gói không cần thiết sử dụng DNF
Các gói đó đã được cài đặt để đáp ứng các phụ thuộc có thể vô ích nếu chúng không được sử dụng bởi các ứng dụng khác. Để xóa các gói không cần thiết đó, hãy thực thi lệnh dưới đây.
# dnf autoremove
16. Xóa các gói đã tải về sử dụng DNF
Nhiều lúc chúng ta gặp các tiêu đề đã lỗi thời và các giao dịch chưa hoàn tất dẫn đến lỗi khi thực thi dnf. Chúng ta có thể xóa tất cả các gói và tiêu đề đã tải về chứa thông tin gói từ xa một cách đơn giản bằng cách thực hiện.
# dnf clean all
17. Nhận trợ giúp về lệnh cụ thể của DNF
Bạn có thể nhận trợ giúp về bất kỳ lệnh cụ thể của dnf (như clean) chỉ bằng cách thực hiện lệnh dưới đây.
# dnf help clean
18. Liệt kê tất cả các lệnh và tùy chọn DNF
Để liệt kê trợ giúp về tất cả các lệnh dnf có sẵn và tùy chọn đơn giản là nhập.
# dnf help
19. Xem lịch sử của DNF
Bạn có thể gọi lịch sử của dnf để xem danh sách các lệnh dnf đã được thực thi. Điều này giúp bạn biết được những gì đã được cài đặt/xóa với dấu thời gian.
# dnf history
20. Liệt kê tất cả các gói nhóm
Lệnh “dnf grouplist” sẽ liệt kê tất cả các gói có sẵn hoặc đã cài đặt, nếu không có gì được đề cập, nó sẽ liệt kê tất cả các nhóm đã biết.
# dnf grouplist
21. Cài đặt một gói nhóm bằng DNF
Để cài đặt một nhóm gói được đóng gói cùng nhóm (như Phần mềm giáo dục) một cách đơn giản như.
# dnf groupinstall 'Educational Software'
22. Cập nhật một gói nhóm
Hãy cập nhật một Gói nhóm (như Phần mềm giáo dục) bằng cách thực hiện lệnh dưới đây.
# dnf groupupdate 'Educational Software'
23. Xóa một gói nhóm
Chúng ta có thể xóa Gói nhóm (như Phần mềm giáo dục) như.
# dnf groupremove 'Educational Software'
24. Cài đặt một gói từ kho lưu trữ cụ thể
DNF cho phép bạn cài đặt bất kỳ gói cụ thể nào (như phpmyadmin) từ một kho lưu trữ (epel) như sau
# dnf --enablerepo=epel install phpmyadmin
25. Đồng bộ hóa các gói đã cài đặt với phiên bản ổn định
Lệnh “dnf distro-sync” cung cấp các tùy chọn cần thiết để đồng bộ tất cả các gói đã cài đặt với phiên bản ổn định mới nhất có sẵn từ bất kỳ kho lưu trữ nào đã được bật. Nếu không có gói nào được chọn, tất cả các gói đã cài đặt sẽ được đồng bộ hóa.
# dnf distro-sync
26. Cài đặt lại một gói
Lệnh “dnf reinstall nano” sẽ cài đặt lại gói đã được cài đặt trước đó (như nano).
# dnf reinstall nano
27. Downgrade một gói
Tùy chọn “downgrade” sẽ giảm phiên bản của gói có tên (như acpid) xuống phiên bản thấp hơn nếu có thể.
# dnf downgrade acpid
Kết quả mẫu:
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.
DNF không giảm cấp gói như nó nên làm. Điều này đã được báo cáo là lỗi.
Kết luận
DNF là trạng thái trên cùng của trình quản lý gói YUM. Điều này có xu hướng tự động làm nhiều xử lý mà nhiều quản trị hệ thống Linux có kinh nghiệm không đánh giá cao, theo tôi nghĩ. Ví dụ:
--skip-broken
không được nhận dạng bởi DNF và không có thay thế.
- Không có gì giống như ‘resolvedep‘ lệnh tuy nhiên bạn có thể chạy dnf provides.
- Không có lệnh ‘deplist’ để tìm phụ thuộc gói.
- Bạn loại trừ một kho, có nghĩa là việc loại trừ áp dụng cho tất cả các hoạt động, không giống như yum, chỉ loại trừ các kho đó trong quá trình cài đặt và cập nhật, vv.
Nhiều người dùng Linux không quá hài lòng với cách diện mạo Linux đang diễn biến. Đầu tiên, systemd đã gỡ bỏ hệ thống khởi động và giờ đây DNF command sẽ thay thế YUM trong không xa Fedora 22 và RHEL và CentOS sau này.
Bạn nghĩ sao? liệu các bản phân phối và hệ sinh thái của Linux có đánh giá cao người dùng và di chuyển ngược lại ý muốn của họ. Nó thường được nói trong ngành công nghệ thông tin - “Tại sao sửa nếu không hỏng?” và không có cả init System V và YUM đã hỏng.