DNF,又稱為Dandified YUM,是基於RPM的發行版的下一代套件管理器。它首次出現在 Fedora 18 中,並在最近的 Fedora 22 發行版中取代了YUM 工具。
DNF的目標是改善YUM的瓶頸,例如性能、內存使用、依賴解析、速度以及許多其他因素。DNF使用 RPM、libsolv 和 hawkey 函式庫進行套件管理。儘管它在 CentOS 和 RHEL 7 中並未預先安裝,您可以使用 yum、dnf 並與 yum 一起使用它。
您可以在這裡閱讀更多關於 DNF 的資訊:
目前最新穩定版本的DNF是1.0(在發文時),於2015年5月11日發布。它(以及所有之前的 DNF 版本)主要使用 Python 編寫,並釋出在 GPL v2 許可證下。
安裝 DNF
DNF 在RHEL/CentOS 7的默認存儲庫中不可用。但是 Fedora 22 正式實施了 DNF。
要在 RHEL/CentOS 系统上安装 DNF,您需要首先安装并启用 epel-release 存储库。
# yum install epel-release OR # yum install epel-release -y
虽然使用“-y”和 yum 不道德,因为建议查看系统中安装了什么。但是,如果这对您来说不那么重要,您可以在使用 yum 安装所有内容时使用“-y”自动安装,而无需用户干预。
接下来,使用 yum 命令从 epel-release 存储库安装 DNF 软件包。
# yum install dnf
成功安装 dnf 后,现在是时候向您展示 27 个有关 dnf 命令 的实际用途和示例,这将帮助您轻松有效地管理 RPM-based 发行版的软件包。
1. 检查 DNF 版本
检查您系统上安装的 DNF 版本。
# dnf --version
2. 列出已启用的 DNF 存储库
使用 dnf 命令的“repolist”选项,将显示系统中所有已启用的存储库。
# dnf repolist
3. 列出所有已启用和已禁用的 DNF 存储库
选项“repolist all”将打印系统中所有已启用/已禁用的存储库。
# dnf repolist all
4. 使用 DNF 列出所有可用和已安装的软件包
命令“dnf list”将列出所有存储库中的可用软件包和您的 Linux 系统上已安装的软件包。
# dnf list
5. 使用 DNF 列出所有已安装的软件包
當使用“dnf list”命令時,會顯示所有可用/已安裝的套件來自所有儲存庫。然而,您可以使用“list installed”選項僅列出已安裝的套件,如下所示。
# dnf list installed
6. 使用 DNF 列出所有可用的套件
同樣地,“list available”選項將列出所有可從所有已啟用的儲存庫安裝的套件。
# dnf list available
7. 使用 DNF 搜尋套件
如果您不知道要安裝哪個套件,在這種情況下,您可以使用‘search’選項與 dnf 命令搜尋與該單字或字串(比如 nano)相符的套件。
# dnf search nano
8. 查看提供檔案/子套件的套件為何?
dnf 選項“provides”找出提供特定檔案/子套件的套件名稱。例如,如果您想找出系統上提供‘/bin/bash‘的是哪個套件?
# dnf provides /bin/bash
9. 使用 DNF 取得套件詳細資訊
假設您想在安裝套件之前瞭解套件的資訊,您可以使用“info”開關取得有關套件(比如 nano)的詳細資訊如下。
# dnf info nano
10. 使用 DNF 安裝套件
要安裝名為 nano 的套件,只需執行以下命令,它將自動解決並安裝套件 nano 的所有必要相依性。
# dnf install nano
11. 使用 DNF 更新套件
您可以僅更新特定的軟件包(例如systemd),並保持系統中的其他軟件包不變。
# dnf update systemd
12. 使用 DNF 檢查系統更新
只需執行以下命令,即可檢查系統中所有安裝的軟件包的更新情況。
# dnf check-update
13. 使用 DNF 更新所有系統軟件包
您可以使用以下命令更新整個系統,包括所有已安裝的軟件包。
# dnf update OR # dnf upgrade
14. 使用 DNF 移除/刪除軟件包
若要移除或刪除任何不需要的軟件包(例如nano),您可以使用“remove”或“erase”選項與 dnf 命令一起使用來移除它。
# dnf remove nano OR # dnf erase nano
15. 使用 DNF 移除孤立軟件包
那些僅用於滿足依賴關係的軟件包,如果未被其他應用程序使用,可能是多餘的。執行以下命令即可刪除這些孤立軟件包。
# dnf autoremove
16. 使用 DNF 移除緩存的軟件包
A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.
# dnf clean all
17. 獲取特定 DNF 命令的幫助
您可以通過執行以下命令來獲取任何特定的 dnf 命令(例如clean)的幫助。
# dnf help clean
18. 列出所有 DNF 命令和選項
要查看所有可用 dnf 命令和選項的幫助,只需輸入以下命令。
# dnf help
19. 查看 DNF 的歷史記錄
您可以通過調用 dnf history 查看已執行的 dnf 命令列表。這樣您就可以了解隨時間戳記安裝/移除了什麼。
# dnf history
20. 列出所有群組軟件包
執行“dnf grouplist”命令將打印出所有可用或已安裝的套件,如果未指定任何內容,則將列出所有已知的群組。
# dnf grouplist
21. 使用 DNF 安裝群組套件
要安裝捆綁在一起的一組套件(比如教育軟件),只需執行以下命令。
# dnf groupinstall 'Educational Software'
22. 更新群組套件
通過執行以下命令,我們可以更新一個群組套件(比如教育軟件)。
# dnf groupupdate 'Educational Software'
23. 移除群組套件
我們可以如下移除群組套件(比如教育軟件)。
# dnf groupremove 'Educational Software'
24. 從特定儲存庫安裝套件
DNF 可以讓我們從儲存庫(比如epel)簡單地安裝任何特定套件(比如phpmyadmin)。
# dnf --enablerepo=epel install phpmyadmin
25. 將安裝的套件同步到穩定版本
命令“dnf distro-sync”將提供必要的選項,以將所有已安裝的套件同步到任何已啟用儲存庫中最新的穩定版本。如果未選擇任何套件,則將同步所有已安裝的套件。
# dnf distro-sync
26. 重新安裝套件
命令“dnf reinstall nano”將重新安裝已安裝的套件(比如nano)。
# dnf reinstall nano
27. 降級套件
選項“downgrade”將將指定的套件(比如 acpid)降級到較低版本(如果可能)。
# dnf downgrade acpid
範例輸出
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沒有按照預期對套件進行降級。這也已被報告為一個錯誤。
結論
DNF是最先進的套件管理器YUM的上一代。它傾向於自動執行許多處理,這可能不會受到許多經驗豐富的Linux系統管理員的讚揚,我相信。例如:
--skip-broken
在DNF中無法被識別,也沒有替代方法。- 沒有像‘resolvedep’這樣的命令,不過你可以運行dnf provides。
- 沒有‘deplist’命令來查找套件依賴性。
- 你排除一個存儲庫,這意味著排除適用於所有操作,不像yum只在安裝和更新時排除那些存儲庫等。
許多Linux用戶對Linux生態系統的變化感到不滿。首先是Systemd移除了init system v,現在DNF將在Fedora 22以及稍後在RHEL和CentOS中取代YUM。
你怎麼看?發行版和整個Linux生態系統是否沒有重視用戶並且違背了他們的意願。在IT行業中經常說 – “如果沒壞,為什麼修?”,既不init System V壞了,也不是YUM。
就這些了。請在下面的評論中讓我知道你寶貴的想法。點贊並分享我們,幫助我們擴散。
Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/