How-To:Linux 使用 DNF 套件管理工具

操作環境:

  • Fedora 27

 

Linux 發行版本普遍會使用特定的套件格式來處理軟體的打包、發佈、安裝、更新以及移除等操作。而至今最主流的套件格式有兩種:*.deb 和 *.rpm,前者最早是由 Debian 所採用,後者則最早是用於 Red Hat Linux。除了以上的發行版外,這兩種套件格式也各自被許多其它的發行版所採用。

 

操作 *.deb 套件的最基本工具是 dpkg,至於 *.rpm 則是使用同名的 rpm 工具。由於一款可以運作的軟體往往會由許多套件組成,因此 dpkg/rpm 的使用者必須先查核套件的相依性、手動收集並下載所需的套件後才能夠順利安裝。而後續的套件更新或移除也同樣得經過較為繁複的程序。

 

也因此便出現了更加自動化的套件管理工具,例如用於 *.deb 的 apt-get,以及用於 *.rpm 的 yum。這類的進階工具能夠自動化處理套件相依性的問題,並且從線上的套件庫直接下載所需的套件。除此之外,套件的搜尋、更新以及移除等操作也都變得方便許多。

 

本文所介紹的 DNF 則是 yum 的下一個版本(雖然它連名稱都換了),因此過去採用 yum 的發行版在可預見的將來都將會轉移至 DNF。

 

1. DNF 基本操作

DNF 有許多指令可供使用,這裡僅列舉出較常見的指令:

  • dnf install <套件名稱>(安裝套件)
  • dnf install <套件名稱>.i686(指定安裝 32bit 的套件,常用於 64bit 的系統上)
  • dnf install <套件的完整路徑及檔名>(安裝位於本地或遠端路徑的 *.rpm 套件)
  • dnf reinstall <套件名稱>(重新安裝已安裝的套件)
  • dnf remove <套件名稱>(移除套件)
  • dnf upgrade <套件名稱>(更新套件)
  • dnf upgrade(更新所有套件)
  • dnf history(檢視歷史記錄)
  • dnf history undo last(復原最近的一次作業)
  • dnf info <套件名稱>(查詢套件資訊)
  • dnf search <關鍵字>(按關鍵字搜尋符合的套件描述或名稱)
  • dnf provides "*/<檔名>"(搜尋內含該檔案的套件)
  • dnf group list(列出可用的套件群組)
  • dnf group install "<群組名稱>"(安裝該群組)
  • dnf group remove "<群組名稱>"(移除該群組)
  • dnf repolist all(列出完整套件庫清單)
  • dnf clean all(清除所有快取資料,適用於 DNF 異常時)
  • dnf download <套件名稱>(下載套件至本地)
  • dnf download --source <套件名稱>(下載套件的 SRPM)

 

當中絕大多數的 DNF 指令都需要 root 權限,儘管某些不涉及套件安裝或移除的指令並不強制要求 root 權限,但若是使用一般權限執行則會產生額外的快取,因此建議皆使用 root 權限來執行(加上 sudo)。此外上述指令若加上「-y」參數則會省略確認步驟,直接套用任何變更。

 

2. DNF 的設定檔

DNF 的設定檔位於 /etc/dnf/dnf.conf。如果想要讓 DNF 偵測鏡像站的速度,並自動選擇較快速的站點,可以加入以下設定值:

fastestmirror=True

 

3. 安裝第三方套件庫

由於 Fedora 的官方套件庫只容許收納自由軟體(Free Software),並且不能涉及專利權爭議。因此若想要以 DNF 來取得非自由軟體授權的開放原始碼軟體、或者是有專利權爭議的自由軟體,甚至是封閉原始碼的驅動程式或應用程式,便需要安裝第三方的套件庫。

 

RPM Fusion 是目前已知最大型的 Fedora 第三方套件庫,包含了 NVIDIA 官方驅動程式以及許多的應用程式。此外它所提供的套件也時常被其它的第三方套件庫所依賴。因此對於 Fedora 的桌面使用者而言,RPM Fusion 幾乎是必裝的,而其套件庫的安裝方式如下:

  • sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

 

negativo17.org 所提供的 fedora-multimedia 是相對較小的套件庫,主要是針對多媒體應用領域。它所收納的套件與 RPM Fusion 有一些重複性,但同時也擁有一些後者未提供的套件,例如播放 DVD 所需的 libdvdcss 函式庫。其安裝方式如下:

  • sudo dnf config-manager --add-repo=https://negativo17.org/repos/fedora-multimedia.repo

 

至於 Adobe 官方的 Linux 套件庫則主要是用來安裝 Flash Player,其用於 i386 與 x86_64 架構的套件庫安裝方式分別如下:

  • sudo dnf install http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm
  • sudo dnf install http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm

 

上述指令會將套件庫的設定檔安裝於 /etc/yum.repos.d/ 目錄中,並且預設都是啟用的。若想要停用或者再次啟用某個套件庫,除了手動編輯設定檔外,可用的設定指令分別如下:

  • sudo dnf config-manager --set-disabled <套件庫 ID>
  • sudo dnf config-manager --set-enabled <套件庫 ID>

 

4. 套件搜尋的技巧

DNF 的搜尋功能僅能針對已安裝的套件庫以及相符的系統版本,若有更廣泛的搜尋需求,除了應善加利用 Google 外,還可以借助下列的套件搜尋網站:

 

5. 其它參考資料