一、dnf包管理器简介
DNF(Dandified Yum)是新一代的RPM软件包管理器。他首先出现在 Fedora 18 这个发行版中。而最近,它取代了yum,正式成为 Fedora 22 的包管理器。DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。DNF使用 RPM, libsolv 和 hawkey 库进行包管理操作。尽管它没有预装在 CentOS 和 RHEL 7 中,但你可以在使用 YUM 的同时使用 DNF 。在centos8中已经默认安装DNF,可以同时使用YUM。
二、使用示例
1、查看dnf版本
[root@centos8 ~]# dnf --version
4.2.23
已安装: dnf-0:4.2.23-4.el8.noarch 在 2021年03月05日 星期五 06时17分04秒
构建 :CentOS Buildsys bugs@centos.org 在 2020年08月04日 星期二 18时52分03秒
已安装: rpm-0:4.14.3-4.el8.x86_64 在 2021年03月05日 星期五 06时14分58秒
构建 :CentOS Buildsys bugs@centos.org 在 2020年07月21日 星期二 17时36分08秒
2、查看可用的DNF软件库
该命令用于显示系统中可用的 DNF 软件库
[root@centos8 ~]# dnf repolist
仓库标识 仓库名称
appstream CentOS Linux 8 - AppStream
baseos CentOS Linux 8 - BaseOS
extras CentOS Linux 8 - Extras
zabbix Zabbix Official Repository - x86_64
zabbix-non-supported Zabbix Official Repository non-supported - x86_64
3、查看所有DNF软件库
该命令用于显示系统中可用和不可用的所有的 DNF 软件库
[root@centos8 ~]# dnf repolist all
仓库标识 仓库名称 状态
appstream CentOS Linux 8 - AppStream 启用
appstream-source CentOS Linux 8 - AppStream - Source 禁用
baseos CentOS Linux 8 - BaseOS 启用
baseos-source CentOS Linux 8 - BaseOS - Source 禁用
cr CentOS Linux 8 - ContinuousRelease 禁用
debuginfo CentOS Linux 8 - Debuginfo 禁用
devel CentOS Linux 8 - Devel WARNING! FOR BUILDROOT USE ONLY! 禁用
extras CentOS Linux 8 - Extras 启用
extras-source CentOS Linux 8 - Extras - Source 禁用
fasttrack CentOS Linux 8 - FastTrack 禁用
ha CentOS Linux 8 - HighAvailability 禁用
media-appstream CentOS Linux 8 - Media - AppStream 禁用
media-baseos CentOS Linux 8 - Media - BaseOS 禁用
plus CentOS Linux 8 - Plus 禁用
plus-source CentOS Linux 8 - Plus - Source 禁用
powertools CentOS Linux 8 - PowerTools 禁用
zabbix Zabbix Official Repository - x86_64 启用
zabbix-non-supported Zabbix Official Repository non-supported - x86_64 启用
4、列出RPM包
dnf list该命令用于列出用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
[root@centos8 ~]# dnf list --help
List command-specific options:
–all 显示所有的软件包(默认)
–available 只显示可用的软件包
–installed 只显示已安装的软件包
–extras 只显示额外的软件包
–updates 只显示需要被升级的软件包
–upgrades 只显示需要被升级的软件包
–autoremove 只显示需要被删除的软件包
–recent 限制最近被改变的软件包
[root@centos8 ~]# dnf list --installed ##列出已安装的rpm包
[root@centos8 ~]# dnf list --available ##列出可用的rpm包
…
5、搜索软件库中的rpm包
[root@centos8 ~]# dnf search vim
上次元数据过期检查:2:14:46 前,执行于 2021年03月12日 星期五 20时28分47秒。
=================================================== 名称 和 概况 匹配:vim ===================================================
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System - GVim
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.noarch : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor
6、查看软件包详情
[root@centos8 ~]# dnf info zabbix-agent
上次元数据过期检查:2:16:21 前,执行于 2021年03月12日 星期五 20时28分47秒。
已安装的软件包
名称 : zabbix-agent
版本 : 5.2.5
发布 : 1.el8
架构 : x86_64
大小 : 2.0 M
源 : zabbix-5.2.5-1.el8.src.rpm
仓库 : @System
来自仓库 : zabbix
概况 : Old Zabbix Agent
URL : http://www.zabbix.com/
协议 : GPLv2+
描述 : Old implementation of zabbix agent.
: To be installed on monitored systems.
7、安装软件包
[root@centos8 ~]# dnf install -y wget
…
已安装:
wget-1.19.5-10.el8.x86_64
完毕!
8、升级软件包
[root@centos8 ~]# dnf update -y vim
9、卸载软件包
[root@centos8 ~]# dnf remove -y vim
10、检查系统软件包的更新
[root@centos8 ~]# dnf check-update
11、查看dnf执行历史
[root@centos8 ~]# dnf history
ID | 命令行 | 日期和时间 | 操作 | 更改
------------------------------------------------------------------------------------------------------------------------------
9 | install -y wget | 2021-03-12 22:46 | Install | 1
8 | remove wget | 2021-03-12 22:46 | Removed | 1
7 | install glibc-langpack-zh.x86_64 | 2021-03-06 23:07 | Install | 1
6 | install -y zabbix-server-mysql | 2021-03-06 05:27 | Install | 5
5 | remove -y zabbix-server | 2021-03-06 05:27 | Removed | 5
4 | install -y zabbix-server | 2021-03-06 05:26 | Install | 5
3 | remove -y zabbix-server | 2021-03-06 05:26 | Removed | 4 E<
2 | install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix- | 2021-03-06 01:32 | Install | 31 ><
1 | | 2021-03-04 22:13 | Install | 1366 >E
12、更新软件包到最新的稳定发行版
[root@centos8 ~]# dnf distro-sync
…
已安装:
grub2-tools-efi-1:2.02-90.el8_3.1.x86_64 kernel-4.18.0-240.15.1.el8_3.x86_64
kernel-core-4.18.0-240.15.1.el8_3.x86_64 kernel-devel-4.18.0-240.15.1.el8_3.x86_64
kernel-modules-4.18.0-240.15.1.el8_3.x86_64
完毕!
13、删除缓存的无用软件包
[root@centos8 opt]# dnf clean all
14、删除无用的软件包
[root@centos8 opt]# dnf autoremove
15、查看所有的软件包组
[root@centos8 opt]# dnf grouplist
上次元数据过期检查:2:35:45 前,执行于 2021年03月12日 星期五 20时28分47秒。
可用环境组:
带 GUI 的服务器
服务器
最小安装
工作站
虚拟化主机
定制操作系统
可用组:
容器管理
.NET 核心开发
RPM 开发工具
开发工具
图形管理工具
无头系统管理
传统 UNIX 兼容性
网络服务器
科学记数法支持
安全性工具
智能卡支持
系统工具
16、安装一个软件包组
[root@centos8 opt]# dnf groupinstall ‘图形管理工具’
上次元数据过期检查:2:38:43 前,执行于 2021年03月12日 星期五 20时28分47秒。
依赖关系解决。
==============================================================================================================================
软件包 架构 版本 仓库 大小
==============================================================================================================================
安装组:
Graphical Administration Tools
\
事务概要
==============================================================================================================================
确定吗?[y/N]: y
完毕!
17、卸载一个软件包组
[root@centos8 opt]# dnf groupremove -y ‘图形管理工具’
依赖关系解决。
==============================================================================================================================
软件包 架构 版本 仓库 大小
==============================================================================================================================
删除组:
Graphical Administration Tools
\
事务概要
==============================================================================================================================
完毕!
三、使用语法和参数说明
1、使用语法
用法:dnf [options] COMMAND
2、参数说明
1)、主要参数列表
-
alias 列出或创建命令别名
-
autoremove 删除所有原先因为依赖关系安装的不需要的软件包
-
check 在包数据库中寻找问题
-
check-update 检查是否有软件包升级
-
clean 删除已缓存的数据
-
deplist 列出软件包的依赖关系和提供这些软件包的源
-
distro-sync 同步已经安装的软件包到最新可用版本
-
downgrade 降级包
-
group 显示或使用组信息
-
help 显示一个有帮助的用法信息
-
history 显示或使用事务历史
-
info 显示关于软件包或软件包组的详细信息
-
install 向系统中安装一个或多个软件包
-
list 列出一个或一组软件包
-
makecache 创建元数据缓存
-
mark 在已安装的软件包中标记或者取消标记由用户安装的软件包。
-
module 与模块交互。
-
provides 查找提供指定内容的软件包
-
reinstall 重装一个包
-
remove 从系统中移除一个或多个软件包
-
repolist 显示已配置的软件仓库
-
repoquery 搜索匹配关键字的软件包
-
repository-packages 对指定仓库中的所有软件包运行命令
-
search 在软件包详细信息中搜索指定字符串
-
shell 运行交互式的DNF终端
-
swap 运行交互式的 DNF 终端以删除或者安装 spec 描述文件
-
updateinfo 显示软件包的参考建议
-
upgrade 升级系统中的一个或多个软件包
-
upgrade-minimal 升级,但只有“最新”的软件包已修复可能影响你的系统的问题
2)、插件命令列表:
-
builddep Install build dependencies for package or spec file
-
changelog 查看软件包的改变日志数据
-
config-manager 管理 dnf 配置选项和软件仓库
-
copr 与 Copr 仓库交互
-
debug-dump 转储已安装的 RPM 软件包信息至文件
-
debug-restore 恢复调试用转储文件中的软件包记录
-
debuginfo-install 安装调试信息软件包
-
download 下载软件包至当前目录
-
needs-restarting 判断所升级的二进制文件是否需要重启
-
playground 与 Playground 仓库交互。
-
repoclosure 显示仓库中未被解决的依赖关系的列表
-
repodiff 列出两组仓库中的不同
-
repograph 以点线图方式输出完整的软件包依赖关系图
-
repomanage 管理 RPM 软件包目录
-
reposync 下载远程仓库中的全部软件包
可选参数:
-
-c [config file], --config [config file] 配置文件位置
-
-q, --quiet 静默执行
-
-v, --verbose 详尽执行
-
–version 显示 DNF 版本信息并退出
-
–installroot [path] 设置目标根目录
-
–nodocs 不要安装文档
-
–noplugins 禁用所有插件
-
–enableplugin [plugin] 启用指定名称的插件
-
–disableplugin [plugin] 禁用指定名称的插件
-
–releasever RELEASEVER 覆盖在配置文件和仓库文件中 $releasever 的值
-
–setopt SETOPTS 设置任意配置和仓库选项
-
–skip-broken 通过跳过软件包来解决依赖问题
-
-h, --help, --help-cmd 显示命令帮助
-
–allowerasing 允许解决依赖关系时删除已安装软件包
-
-b, --best 在事务中尝试最佳软件包版本。
-
–nobest 不用把事务限制在最佳选择
-
-C, --cacheonly 完全从系统缓存运行,不升级缓存
-
-R [minutes], --randomwait [minutes] 最大命令等待时间
-
-d [debug level], --debuglevel [debug level] 调试输出级别
-
–debugsolver 转储详细解决结果至文件
-
–showduplicates 在 list/search 命令下,显示仓库里重复的条目
-
-e ERRORLEVEL, --errorlevel ERRORLEVEL 错误输出级别
-
–obsoletes 对 upgrade 启用 dnf 的过期处理逻辑,或对 info、list 和 repoquery 显示软件包过期的功能
-
–rpmverbosity [debug level name] rpm调试输出等级
-
-y, --assumeyes 全部问题自动应答为是
-
–assumeno 全部问题自动应答为否
-
–enablerepo [repo] 启用指定的软件库
-
–disablerepo [repo] 禁用指定的软件库
-
–repo [repo], --repoid [repo] 启用指定 id 或 glob 的仓库,可以指定多次
-
–enable, --set-enabled 使用 config-manager 命令启用 repos (自动保存)
-
–disable, --set-disabled 使用 config-manager 命令禁用 repos (自动保存)
-
-x [package], --exclude [package], --excludepkgs [package] 用全名或通配符排除软件包
-
–disableexcludes [repo], --disableexcludepkgs [repo] 禁用 excludepkgs
-
–repofrompath [repo,path] 指向附加仓库的标记和路径,可以指定多次。
-
–noautoremove 禁用删除不再被使用的依赖软件包
-
–nogpgcheck 禁用 gpg 签名检查 (如果 RPM 策略允许)
-
–color COLOR 配置是否使用颜色
-
–refresh 在运行命令之前将元数据标记为过期。
-
-4 仅解析 IPv4 地址
-
-6 仅解析 IPv6 地址
-
–destdir DESTDIR, --downloaddir DESTDIR 设置软件包要复制到的目录
-
–downloadonly 仅下载软件包
-
–comment COMMENT 为事务添加一个注释
-
–bugfix 在更新中包括与 bug 修复有关的软件包
-
–enhancement 在更新中包括与功能增强有关的软件包。
-
–newpackage 在更新中包括与新软件包有关的软件包
-
–security 在更新中包括与安全有关的软件包
-
–advisory ADVISORY, --advisories ADVISORY 在更新中包括修复指定公告所必须的软件包
-
–bz BUGZILLA, --bzs BUGZILLA 在更新中包括修复给定 BZ 所必须的软件包
-
–cve CVES, --cves CVES 在更新中包括修复给定 CVE 所必须的软件包
-
–sec-severity {Critical,Important,Moderate,Low}, --secseverity {Critical,Important,Moderate,Low} 在更新中包括匹配给定安全等级的安全相关的软件包
-
–forcearch ARCH 强制使用一个架构