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(列出已啟用的套件庫清單)
- 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. 其它參考資料