1. 程式人生 > >系統安裝-009 Linux下dnf使用

系統安裝-009 Linux下dnf使用

DNF是新一代的rpm軟體包管理器。他首先出現在 Fedora 18 這個發行版中。而最近,它取代了yum,正式成為 Fedora 22 的包管理器。

DNF包管理器克服了YUM包管理器的一些瓶頸,提升了包括使用者體驗,記憶體佔用,依賴分析,執行速度等多方面的內容。DNF使用 RPM, libsolv 和 hawkey 庫進行包管理操作。儘管它沒有預裝在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同時使用 DNF 。你可以在這裡獲得關於 DNF 的更多知識:《 DNF 代替 YUM ,你所不知道的緣由》

DNF 的最新穩定發行版版本號是 1.0,發行日期是2015年5月11日。 這一版本的額 DNF 包管理器(包括在他之前的所有版本) 都大部分採用 Python 編寫,發行許可為GPL v2.

安裝 DNF 包管理器

DNF 並未預設安裝在 RHEL 或 CentOS 7系統中,但是 Fedora 22 已經預設使用 DNF .

1、為了安裝 DNF ,您必須先安裝並啟用 epel-release 依賴。

在系統中執行以下命令:

# yum  epel-release

或者

# yum install epel-release -y

其實這裡並沒有強制使用”-y”的理由,相反的,在不使用”-y”的情況下,使用者可以在安裝過程中檢視到底有哪些東西被安裝進了系統。但對於沒有這個需求的使用者,您可以在 YUM 中使用”-y”引數來自動安裝所有東西。

2、使用 epel-release 依賴中的 YUM 命令來安裝 DNF 包。在系統中執行以下命令:

# yum install dnf

然後, DNF 包管理器就被成功的安裝到你的系統中了。接下來,是時候開始我們的教程了!在這個教程中,您將會學到27個用於 DNF 包管理器的命令。使用這些命令,你可以方便有效的管理您系統中的 RPM 軟體包。現在,讓我們開始學習 DNF 包管理器的27條常用命令吧!

檢視 DNF 包管理器版本

用處:該命令用於檢視安裝在您系統中的 DNF 包管理器的版本

# dnf –version

Check-DNF-Version

檢視系統中可用的 DNF 軟體庫

用處:該命令用於顯示系統中可用的 DNF 軟體庫

# dnf repolist

Check-All-Enabled-Repositories

檢視系統中可用和不可用的所有的 DNF 軟體庫

用處:該命令用於顯示系統中可用和不可用的所有的 DNF 軟體庫

# dnf repolist all

3

列出所有 RPM 包

用處:該命令用於列出使用者系統上的所有來自軟體庫的可用軟體包和所有已經安裝在系統上的軟體包

# dnf list

4

列出所有安裝了的 RPM 包

用處:該命令用於列出所有安裝了的 RPM 包

# dnf list installed

5

列出所有可供安裝的 RPM 包

用處:該命令用於列出來自所有可用軟體庫的可供安裝的軟體包

# dnf list available

6

搜尋軟體庫中的 RPM 包

用處:當你不知道你想要安裝的軟體的準確名稱時,你可以用該命令來搜尋軟體包。你需要在”search”引數後面鍵入軟體的部分名稱來搜尋。(在本例中我們使用”nano”)

# dnf search nano

7

查詢某一檔案的提供者

用處:當你想要檢視是哪個軟體包提供了系統中的某一檔案時,你可以使用這條命令。(在本例中,我們將查詢”/bin/bash”這個檔案的提供者)

# dnf provides /bin/bash

8

檢視軟體包詳情

用處:當你想在安裝某一個軟體包之前檢視它的詳細資訊時,這條命令可以幫到你。(在本例中,我們將檢視”nano”這一軟體包的詳細資訊)

# dnf info nano

9

安裝軟體包

用處:使用該命令,系統將會自動安裝對應的軟體及其所需的所有依賴(在本例中,我們將用該命令安裝nano軟體)

# dnf install nano

10

升級軟體包

用處:該命令用於升級制定軟體包(在本例中,我們將用命令升級”systemd”這一軟體包)

# dnf update systemd

11

檢查系統軟體包的更新

用處:該命令用於檢查系統中所有軟體包的更新

# dnf check-update

12

升級所有系統軟體包

用處:該命令用於升級系統中所有有可用升級的軟體包

# dnf update 或 # dnf upgrade

13

刪除軟體包

用處:刪除系統中指定的軟體包(在本例中我們將使用命令刪除”nano”這一軟體包)

# dnf remove nano 或 # dnf erase nano

14

刪除無用孤立的軟體包

用處:當沒有軟體再依賴它們時,某一些用於解決特定軟體依賴的軟體包將會變得沒有存在的意義,該命令就是用來自動移除這些沒用的孤立軟體包。

# dnf autoremove

15

刪除快取的無用軟體包

用處:在使用 DNF 的過程中,會因為各種原因在系統中殘留各種過時的檔案和未完成的編譯工程。我們可以使用該命令來刪除這些沒用的垃圾檔案。

# dnf clean all

16

獲取有關某條命令的使用幫助

用處:該命令用於獲取有關某條命令的使用幫助(包括可用於該命令的引數和該命令的用途說明)(本例中我們將使用命令獲取有關命令”clean”的使用幫助)

# dnf help clean

17

檢視所有的 DNF 命令及其用途

用處:該命令用於列出所有的 DNF 命令及其用途

# dnf help

18

檢視 DNF 命令的執行歷史

用處:您可以使用該命令來檢視您系統上 DNF 命令的執行歷史。通過這個手段您可以知道在自您使用 DNF 開始有什麼軟體被安裝和解除安裝。

19

檢視所有的軟體包組

用處:該命令用於列出所有的軟體包組

# dnf grouplist

20

安裝一個軟體包組

用處:該命令用於安裝一個軟體包組(本例中,我們將用命令安裝”Educational Software”這個軟體包組)

# dnf groupinstall ‘Educational Software’

21

升級一個軟體包組中的軟體包

用處:該命令用於升級一個軟體包組中的軟體包(本例中,我們將用命令升級”Educational Software”這個軟體包組中的軟體)

# dnf groupupdate ‘Educational Software’

22

刪除一個軟體包組

用處:該命令用於刪除一個軟體包組(本例中,我們將用命令刪除”Educational Software”這個軟體包組)

# dnf groupremove ‘Educational Software’

23

從特定的軟體包庫安裝特定的軟體

用處:該命令用於從特定的軟體包庫安裝特定的軟體(本例中我們將使用命令從軟體包庫 epel 中安裝 phpmyadmin 軟體包)

# dnf –enablerepo=epel install phpmyadmin

更新軟體包到最新的穩定發行版

用處:該命令可以通過所有可用的軟體源將已經安裝的所有軟體包更新到最新的穩定發行版

# dnf distro-sync

重新安裝特定軟體包

用處:該命令用於重新安裝特定軟體包(本例中,我們將使用命令重新安裝”nano”這個軟體包)

# dnf reinstall nano

26

回滾某個特定軟體的版本

用處:該命令用於降低特定軟體包的版本(如果可能的話)(本例中,我們將使用命令降低”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 並沒有按照我期望的那樣降級指定的軟體(“acpid”)。該問題已經上報。

總結

DNF 包管理器作為 YUM 包管理器的升級替代品,它能自動完成更多的操作。但在我看來,正因如此,所以 DNF 包管理器不會太受那些經驗老道的 Linux 系統管理者的歡迎。舉例如下:

  1. 在 DNF 中沒有 –skip-broken 命令,並且沒有替代命令供選擇。
  2. 在 DNF 中沒有判斷哪個包提供了指定依賴的 resolvedep 命令。
  3. 在 DNF 中沒有用來列出某個軟體依賴包的 deplist 命令。
  4. 當你在 DNF 中排除了某個軟體庫,那麼該操作將會影響到你之後所有的操作,不像在 YUM 下那樣,你的排除操作只會咋升級和安裝軟體時才起作用。