dnf 一個即將取代 yum的套件管理程式

URL Link http://n.sfs.tw/14630

2020-05-01 14:16:02 By 張○○

Centos 系統中老牌的套件管理程式yum,也許未來將被dnf所取代。

不知centos使用者有沒有發現,到了Centos8 之後,多出了一個dnf程式,根據官網的說明[2],這個指令就是下一代的yum:

DNF  is  the  next upcoming major version of YUM, a package manager for RPM-based Linux distributions. It roughly main‐
tains CLI compatibility with YUM and defines a strict API for extensions and plugins.

因此把dnf視為yum即可,功能操作大同小異。

安裝

在centos8以後就算最小安裝還是內建存在,前面的版本使用yum 安裝:

# yum install epel-release
# yum install dnf

基本操作

安裝套件

# dnf install <package name>

移除套件

# dnf remove <package name>

升級套件

# dnf upgrade <package name>

升級全部套件

# dnf upgrade

重裝套件

# dnf reinstall <package name>

清除dnf快取

# dnf clean packages
# dnf clean all

利用關建字查詢套件(包含未安裝的)

$ dnf search <package name or keywordd>
$ dnf search nmap
上次中介資料過期檢查:0:36:43 以前,時間點為 西元2020年05月01日 (週五) 14時23分44秒。
======================================= 名稱 精確符合:nmap ========================================
nmap.x86_64 : Network exploration tool and security scanner
===================================== 名稱 & 摘要 符合: nmap ======================================
nmap-ncat.x86_64 : Nmap's Netcat replacement
python3-nmap.noarch : A Python library which helps in using nmap port scanner

利用檔案查詢套件

不知程式在哪個套件,可用provides 關鍵字

$ dnf provides <package name or keywordd>

$ dnf provides "dig"

$ dnf provides "dig"
上次中介資料過期檢查:0:38:46 以前,時間點為 西元2020年05月01日 (週五) 14時23分44秒。
bind-utils-32:9.11.4-17.P2.el8_0.1.x86_64 : Utilities for querying DNS name servers
軟體庫    :@System
符合之來源:
檔案名稱  :/usr/bin/dig

bind-utils-32:9.11.4-26.P2.el8.x86_64 : Utilities for querying DNS name servers
軟體庫    :AppStream
符合之來源:
檔案名稱  :/usr/bin/dig

查看安裝的套件版本

# dnf list <套件1> <套件2> <套件3>...

查看安裝記錄

# dnf history

儲存庫操作 Repository

 

查看儲存庫詳細清單

$ dnf repolist all

 查看儲存庫

$ dnf repolist
$ dnf repolist
CentOS-8 - AppStream                                                       2.6 MB/s | 7.0 MB     00:02  
CentOS-8 - Base                                                            299 kB/s | 2.2 MB     00:07  
CentOS-8 - Extras                                                          2.1 kB/s | 5.5 kB     00:02  
Extra Packages for Enterprise Linux 8 - x86_64                             970 kB/s | 6.5 MB     00:06    
軟體庫 ID                  軟體庫名稱                                                          狀態
AppStream                 CentOS-8 - AppStream                                              5,318
BaseOS                    CentOS-8 - Base                                                   1,661
*epel                     Extra Packages for Enterprise Linux 8 - x86_64                    5,373
extras                    CentOS-8 - Extras                                                    15

查看儲存庫資訊詳細

$ dnf repoinfo

列出已安裝清單

$ dnf list

查看套件是否已裝

$ dnf list | grep '套件名'
$ dnf list | grep 'wget'
wget.x86_64                                          1.19.5-7.el8_0.1                                       @AppStream
wget.x86_64                                          1.19.5-8.el8_1.1                                       AppStream

新增儲存庫

儲存庫和 yum 共用,放在 /etc/yum.repos.d/

依yum 的方式加入儲存庫即可,以下範例加入mongo repository[4]

# vi /etc/yum.repos.d/mongodb-org-4.2.repo
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
# dnf install mongodb-org

設定檔

設定檔放在 /etc/dnf/dnf.conf

儲存庫和 yum 共用,放在 /etc/yum.repos.d/

參考資料

[1] https://darkranger.no-ip.org/content/how-to%EF%BC%9Alinux-%E4%BD%BF%E7%94%A8-dnf-%E5%A5%97%E4%BB%B6%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7

[2] man dnf or https://dnf.readthedocs.io/en/latest/command_ref.html

[3] https://linuxstory.org/dnf-commands-for-fedora-rpm-package-management/zh-tw/

[4] Install mongodb https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/