27个‘DNF’(Yum的分支)命令,用于Linux中的RPM软件包管理

DNF,又稱為Dandified YUM,是基於RPM的發行版的下一代套件管理器。它首次出現在 Fedora 18 中,並在最近的 Fedora 22 發行版中取代了YUM 工具

DNF的目標是改善YUM的瓶頸,例如性能、內存使用、依賴解析、速度以及許多其他因素。DNF使用 RPM、libsolv 和 hawkey 函式庫進行套件管理。儘管它在 CentOS 和 RHEL 7 中並未預先安裝,您可以使用 yum、dnf 並與 yum 一起使用它。

您可以在這裡閱讀更多關於 DNF 的資訊:

  1. 將 Yum 替換為 DNF 的原因

目前最新穩定版本的DNF1.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系統管理員的讚揚,我相信。例如:

  1. --skip-broken在DNF中無法被識別,也沒有替代方法。
  2. 沒有像‘resolvedep’這樣的命令,不過你可以運行dnf provides。
  3. 沒有‘deplist’命令來查找套件依賴性。
  4. 你排除一個存儲庫,這意味著排除適用於所有操作,不像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/