Linux中國

27 個 Linux 下軟體包管理工具 DNF 命令例子

DNF致力於改善YUM的瓶頸,即性能、內存佔用、依賴解決、速度和許多其他方面。DNF使用RPM、libsolv和hawkey庫進行包管理。儘管它並未預裝在CentOS和RHEL 7中,但您可以通過yum安裝,並同時使用二者。

您也許想閱讀更多關於DNF的信息:

最新的DNF穩定版本是2015年5月11日發布的1.0(在寫這篇文章之前)。它(以及所有DNF之前版本)主要由Python編寫,並以GPL v2許可證發布。

安裝DNF

儘管Fedora 22官方已經過渡到了DNF,但DNF並不在RHEL/CentOS 7的默認倉庫中。

為了在RHEL/CentOS系統中安裝DNF,您需要首先安裝和開啟epel-release倉庫。

# yum install epel-release
或
# yum install epel-release -y

儘管並不建議在使用yum時添上'-y'選項,因為最好還是看看什麼將安裝在您的系統中。但如果您對此並不在意,則您可以使用'-y'選項以自動化的安裝而無需用戶干預。

接下來,使用yum命令從epel-realease倉庫安裝DNF包。

# yum install dnf

在您裝完dnf後,我會向您展示27個實用的dnf命令和例子,以便幫您更容易和高效的管理基於RPM包的發行版。

1. 檢查DNF版本

檢查您的系統上安裝的DNF版本。

# dnf --version

檢查DNF版本

2. 列出啟用的DNF倉庫

dnf命令中的'repolist'選項將顯示您系統中所有啟用的倉庫。

# dnf repolist

檢查所有開啟的倉庫

3. 列出所有啟用和禁用的DNF倉庫

'repolist all'選項將顯示您系統中所有啟用/禁用的倉庫。

# dnf repolist all

列出所有啟用/禁用的倉庫

4. 用DNF列出所有可用的且已安裝的軟體包

'dnf list'命令將列出所有倉庫中所有可用的軟體包和您Linux系統中已安裝的軟體包。

# dnf list

用DNF列出所有的軟體包

5. 用DNF列出所有已安裝的軟體包

儘管'dnf list'命令將列出所有倉庫中所有可用的軟體包和已安裝的軟體包。然而像下面一樣使用'list installed'選項將只列出已安裝的軟體包。

# dnf list installed

列出已安裝的軟體包

6. 用DNF列出所有可用的軟體包

類似的,可以用'list available'選項列出所有開啟的倉庫中所有可用的軟體包。

# dnf list available

用DNF列出可用的軟體包

7. 使用DNF查找軟體包

如果您不太清楚您想安裝的軟體包的名字,這種情況下,您可以使用'search'選項來搜索匹配該字元(例如,nano)和字元串的軟體包。

# dnf search nano

通過關鍵字搜索軟體包

8. 查看哪個軟體包提供了某個文件/子軟體包?

dnf的選項'provides'能查找提供了某個文件/子軟體包的軟體包名。例如,如果您想找找哪個軟體包提供了您系統中的'/bin/bash'文件,可以使用下面的命令

# dnf provides /bin/bash

查找提供文件的軟體包

9. 使用DNF獲得一個軟體包的詳細信息

如果您想在安裝一個軟體包前知道它的詳細信息,您可以使用'info'來獲得一個軟體包的詳細信息,例如:

# dnf info nano

用DNF查看軟體信息

10. 使用DNF安裝軟體包

想安裝一個叫nano的軟體包,只需運行下面的命令,它會為nano自動的解決和安裝所有的依賴。

# dnf install nano

用DNF安裝軟體

11. 使用DNF更新一個軟體包

您可能只想更新一個特定的包(例如,systemd)並且保留系統內剩餘軟體包不變。

# dnf update systemd

更新一個軟體包

12. 使用DNF檢查系統更新

檢查系統中安裝的所有軟體包的更新可以簡單的使用如下命令:

# dnf check-update

檢查系統更新

13. 使用DNF更新系統中所有的軟體包

您可以使用下面的命令來更新整個系統中所有已安裝的軟體包。

# dnf update
或
# dnf upgrade

更新系統

14. 使用DNF來移除/刪除一個軟體包

您可以在dnf命令中使用'remove'或'erase'選項來移除任何不想要的軟體包。

# dnf remove nano
或
# dnf erase nano

移除系統中的軟體

15. 使用DNF移除於依賴無用的軟體包(Orphan Packages)

這些為了滿足依賴安裝的軟體包在相應的程序刪除後便不再需要了。可以用過下面的命令來將它們刪除。

# dnf autoremove

移除無用的依賴包

16. 使用DNF移除緩存的軟體包

我們在使用dnf時經常會碰到過期的頭部信息和不完整的事務,它們會導致錯誤。我們可以使用下面的語句清理緩存的軟體包和包含遠程包信息的頭部信息。

# dnf clean all

移除DNF緩存

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安裝一個軟體包組

要安裝一組由許多軟體打包在一起的軟體包組(例如,Educational Softaware),只需要執行:

# dnf groupinstall 'Educational Software'

安裝一個軟體包組

22. 更新一個軟體包組

可以通過下面的命令來更新一個軟體包組(例如,Educational Software):

# dnf groupupdate 'Educational Software'

更新軟體包組

23. 移除一個軟體包組

可以使用下面的命令來移除一個軟體包組(例如,Educational Software):

# 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不會按預想的那樣降級一個軟體包。這已做為一個bug被提交。

結論

DNF是YUM管理器的優秀替代品。它試著自動做許多甚至不推薦有經驗的Linux系統管理員做的工作。例如:

  • --skip-broken不被DNF識別,並且DNF中沒有其替代命令。
  • 儘管您可能會運行dnf provides,但再也沒有'resolvedep'命令了。
  • 沒有'deplist'命令用來發現軟體包依賴。
  • 您排除一個倉庫意味著在所有操作上排除該倉庫,而在yum中,排除一個倉庫只在安裝和升級等時刻排除他們。

許多Linux用戶對於Linux生態系統的走向不甚滿意。首先Systemd替換了init系統v,現在DNF將於不久後替換YUM,首先是Fedora 22,接下來是RHEL和CentOS。

您怎麼看呢?是不是發行版和整個Linux生態系統並不注重用戶並且在朝著與用戶願望相悖的方向前進呢?IT行業里有這樣一句話 - 「如果沒有壞,為什麼要修呢?」,System V和YUM都沒有壞。

上面便是這篇文章的全部了。請在下方留言以讓我了解您的寶貴想法。點贊和分享以幫助我們傳播。謝謝!

via: http://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/

作者:Avishek Kumar 譯者:wwy-hust 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國