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

操作環境:

  • Fedora 38

 

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 使用者最為仰賴的第三方套件庫,其安裝方式如下:

  • 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 有一些重複性,除了多媒體相關應用程式及函式庫外,也同樣有包含 NVIDIA 顯示驅動程式,以及 Steam 的 Linux 客戶端。所以倘若是同時使用這兩個套件庫作為安裝來源,則使用者可能得留意是否會出現套件衝突的情形。該套件庫的安裝方式如下:

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

 

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

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

 

4. 套件搜尋的技巧

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

 

5. 其它參考資料