DNF软件包管理器简明指南
DNF是现在大多数基于RPM的Linux发行版上的默认包管理系统。
DNF从存储库下载软件包,安装、卸载和更新软件包。它为您要安装、更新或删除的软件包执行自动依赖关系解析,并安装满足依赖性要求的所有软件包。
在Fedora上,DNF自Fedora 22以来一直是默认的软件包管理器。在RHEL 8.x上,它现在是默认的软件包管理器。
DNF通过在GPG签名的软件包上启用GPG签名验证,提供安全的软件包管理。DNF不会安装未使用正确密钥签名的软件包。
为了向后兼容,RHEL 8.x也有一个YUM命令,但它是指向DNF的链接。
为什么选择DNF?
DNF或Dandified YUM是下一代YUM。与YUM相比,DNF具有更好的内存利用率,改进的依赖关系管理能力,并且可以在Python 2和Python 3上运行。
使用DNF进行软件包管理
您必须具有超级用户权限才能使用DNF命令来安装、更新或删除软件包。以下是系统管理员经常使用的一组DNF命令。
搜索软件包
要搜索已安装或在所有存储库中可用的软件包,请使用
$ sudo dnf search package_name
例如,要搜索软件包Nmap:
$ sudo dnf search nmap
Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Name Exactly Matched: nmap =====================================
nmap.x86_64 : Network exploration tool and security scanner
=================================== Name & Summary Matched: nmap ====================================
nmap-ncat.x86_64 : Nmap's Netcat replacement
列出软件包
要查看所有已安装和可用的软件包列表:
$ sudo dnf list all
Installed Packages
GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.22.8-4.el8
...
要列出所有已安装的软件包:
$ sudo dnf list installed
Installed Packages
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda
PackageKit.x86_64 1.1.12-4.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream
WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
...
要列出所有可用的软件包:
$ sudo dnf list available
最后的元数据过期检查:1:15:10前于2020年6月2日下午05:37:11 UTC。
可用的软件包
CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
…
例如,要列出所有可用的MySQL软件包:
$ sudo dnf list available “mysql*”
最后的元数据过期检查:1:17:04前于2020年6月2日下午05:37:11 UTC。
可用的软件包
mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
显示软件包信息
要显示有关软件包的信息:
$ sudo dnf info package_name
例如,要显示有关httpd服务器的信息:
$ sudo dnf info httpd
最后的元数据过期检查:0:15:04前于2020年6月1日晚上11:23:11 UTC。
可用的软件包
Name : httpd
Version : 2.4.37
Release : 21.module+el8.2.0+5008+cca404a3
Architecture : x86_64
Size : 1.4 M
Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm
Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
安装软件包
安装单个软件包
要安装单个软件包及其所有未安装的依赖项:
$ sudo dnf install package_name
例如,要安装Nginx,请运行:
$ sudo dnf install nginx
这将安装Nginx及其所有未安装的依赖项要求。
安装多个软件包
您还可以通过将软件包名称添加到此命令中来安装多个软件包。例如,要安装Nginx、PHP和MySQL服务器,请输入:
$ sudo dnf install nginx php mysql-server
已解决的依赖关系。
===========================================================================================
软件包 架构 版本 仓库 大小
===========================================================================================
正在安装:
mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M
nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M
正在安装依赖关系:
apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k
apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k
gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M
httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3
...
按二进制文件名安装软件包
如果您知道要安装的二进制文件的名称,但不知道软件包的名称,甚至只知道二进制文件名也足以安装相关的软件包。
例如,如果您输入:
$ sudo dnf install /usr/sbin/named
上次元数据到期检查:1小时21分钟25秒前,于2020年6月2日星期二下午05:37:11 UTC。
已解决依赖关系。
=====================================================================================================
软件包 架构 版本 仓库 大小
=====================================================================================================
安装中:
bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M
事务总结
=====================================================================================================
安装 1 Package
总下载大小:2.1 M
已安装大小:4.5 M
是否确定 [y/N]:
DNF会搜索并找到提供/usr/sbin/
named的软件包,并提示您安装它。
查找文件所属的软件包
如果您知道文件名并想找到提供它的软件包(已安装或未安装),请使用:
$ sudo dnf provides file_name
例如,要找到提供DNS服务器二进制文件named的软件包,请使用:
$ sudo dnf provides named
上次元数据到期检查:1小时27分钟30秒前,于2020年6月1日星期一晚上11:23:11 UTC。
bind-32:9.11.4-16.P2.el8.x86_64 :
The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) :
server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename :
/usr/sbin/named
卸载软件包
要卸载软件包:
sudo dnf remove package_name
但是请注意,DNF无法在不删除依赖于它的软件包的情况下删除软件包。要删除软件包nmap,请使用:
$ sudo dnf remove nmap
依赖关系已解决。
=====================================================================================================
软件包 架构 版本 软件源 大小
=====================================================================================================
Removing:
nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M
事务摘要
=====================================================================================================
Remove 1 Package
已释放空间: 24 M
是否确定 [y/N]:
管理软件包组
软件包组是一组密切相关且具有共同目的的软件包。安装软件包组可以节省大量时间。
列出所有软件包组
要列出所有软件包组,请执行以下操作:
$ sudo dnf group list
可用的环境组:
Server with GUI
Server
Workstation
Custom Operating System
Virtualization Host
已安装的环境组:
Minimal Install
已安装的组:
Security Tools
Container Management
可用的组:
Legacy UNIX Compatibility
Development Tools
Scientific Support
.NET Core Development
Graphical Administration Tools
Headless Management
RPM Development Tools
Network Servers
System Tools
Smart Card Support
列出组中的所有软件包
要列出组中的所有软件包,请执行以下操作:
$ sudo dnf group info package_name
例如,要查看 Security Tools 组中的软件包:
$ sudo dnf group info “security tools”
组: Security Tools
描述: 完整性和信任验证的安全工具。
默认软件包:
scap-security-guide
可选软件包:
aide
hmaccalc
openscap
openscap-engine-sce
openscap-utils
scap-security-guide-doc
scap-workbench
tpm-quote-tools
tpm-tools
tpm2-tools
trousers
安装一个软件包组
安装一个软件包组将安装组中的所有软件包。使用以下命令安装软件包组:
sudo dnf group install package_group_name
例如,要安装 “网络服务器” 组:
$ sudo dnf group install “Network Servers”
上次元数据过期检查: 1小时40分钟14秒前,于 2020年6月3日星期三下午05:53:11 UTC。
依赖关系已解决。
===========================================================================================
软件包 架构 版本 软件源 大小
===========================================================================================
正在安装组:
Network Servers
事务摘要
===========================================================================================
是否确定 [y/N]:
删除一个软件包组
要删除一个软件包组,请执行以下操作:
sudo dnf remove package_name
因此,要删除 “Security Tools” 软件包组:
$ sudo dnf group remove "security tools"
依赖已解决。
=====================================================================================================
包 架构 版本 仓库 大小
=====================================================================================================
移除:
scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M
移除未使用的依赖关系:
GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M
libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k
openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M
openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k
xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k
移除组:
Security Tools
事务摘要
=====================================================================================================
移除 6 个软件包
释放空间: 247 M
确定要继续吗 [y/N]:
更新软件包
更新所有软件包
要更新所有软件包及其依赖关系,可以使用以下命令:
$ sudo dnf upgrade
上次元数据到期检查: 1:09:31 前,于 2020 年 6 月 2 日星期二 20:38:09 UTC。
依赖关系已解决。
无可用更新。
完成!
这将安装所有可用的更新。dnf upgrade 和 dnf update 具有相同的效果,但推荐使用 dnf upgrade。
更新单个软件包
要更新单个软件包,请运行以下命令:
$ sudo dnf upgrade package_name
例如,要更新 python 软件包:
$ sudo dnf upgrade python
结论
学习 DNF 可能会令人 rewarding,因为它通常是执行系统管理任务的最快方式。如果有兴趣学习 RHEL 8,则可以查看此链接_4。