DNF意思是“ Dandified Yum”。 这是下一代的yum软件包管理器(Yum的派生)。DNF命令使用libsolv,hawkey,ibrepo和libcomps等C语言库编写。它是在Fedora 18中引入的,自Fedora 22以来它一直是默认的软件包管理器。 DNF是一个软件包管理器,可以在基于RPM的Linux发行版上安装,更新和删除软件包。 它会自动计算依赖性并确定安装软件包所需的操作。由于一些长期问题尚未在yum中解决,如性能差,内存使用率高,依赖关系解析速度慢等,yum已被DNF取代。这不仅仅是解决yum中待解决的问题。 此外,DNF添加了许多功能,以实现基于RPM的系统中软件包的无缝管理。
默认情况下,DNF已安装在RHEL 8和CentOS 8系统上。 运行以下命令以在CentOS 7和RHEL 8系统上安装。 DNF软件包可以通过yum命令安装在CentOS 7系统上,因为它是Extras Repo的一部分。 为RHEL 7系统启用“ rhel-7-server-extras-rpms”存储库。
DNF命令的常规语法
DNF命令的语法类似于YUM,你会发现它们之间有很多相似之处。
DNF配置文件的位置
常用DNF命令如下
该命令列出了默认情况下启用的所有仓库,并提供了列出其他信息的选项。 在通过dnf命令添加选项时,可提供了更详细的信息。 此外,它不会强制同步过期的元数据,并且你可以强制同步使用开关启用的所有存储库。
- 列出系统上启用的存储库的标准命令:
- 或者,你可以运行以下命令以列出系统上已启用的仓库:
- 运行以下命令以列出系统上禁用的仓库:
- 运行以下命令以列出系统上的所有仓库(已启用和已禁用):
- 要查看有关每个存储库的详细信息,使用dnf命令添加开关。 它显示repo-id,repo-name等。
下面我们安装nano,MariaDB服务器和MariaDB客户端软件包。 默认情况下,每次DNF要求您确认安装软件包时,都添加选项以避免确认。
- 安装单个软件包:
- 安装多个软件包:
- 在dnf中添加选项以安装软件包,无需确认直接安装:
- 指定仓库安装软件包:
- 安装rpm包文件
- 从url安装rpm包
要安装提供/usr/bin/[xxx]文件的软件包,请运行以下命令。 例如,sar应用程序是“ systat”软件包的一部分,但我们大多数人都不知道其父软件包的名称。 但是,很难找到其父程序包名称,但是此命令允许您在不知道父程序包名称的情况下进行安装。
- 安装跟修复建议相关的包
–advisory ADVISORY : Include packages needed to fix the given advisory, in updates
- 删除一个名为nano的软件包
- 删除重复软件包的旧版本
- 删除最初作为不再需要的其他软件包的依赖关系安装的所有软件包
- 将所有已安装的软件包更新为最新的可用版本
- 将给定的一个或多个软件包更新为最新的可用版本
- 将给定的一个或多个软件包升级到指定的版本
以下命令将显示有关更新建议的信息。这显示了可用于安全性,错误修复和增强的软件包更新数量。 这些软件包可以通过“ dnf upgrade”命令进行升级。
- 显示咨询类型的数量
- 显示建议列表
如果只想在系统上更新错误修正,增强或安全修正包,请使用以下命令。
- 将每个软件包更新为提供错误修正,增强功能或安全修复程序的最新版本。
- 将给定的一个或多个软件包更新为提供错误修正,增强或安全修复的最新版本。
此命令检查系统上是否有任何软件包更新。
- 检查系统是否有任何更新。
- 或者,使用下面的命令检查可用更新。
- 以下命令检查对指定软件包的更新。
此命令检查本地包装,并生成有关已检测到的任何问题的信息。你可以通过选项限制“packagedb”检查–dependencies,–duplicates,–obsoleted或–provides。
dnf list命令将打印我们知道的所有软件包,无论是在RPMDB中,在存储库中还是在两者中。您可以根据需要控制输出。
- 运行以下命令以列出RPMDB中,repo中或同时存在于两者中的所有软件包。
- 仅列出RPMDB中已安装的软件包。
- 列出可用的软件包,但不包括已安装的软件包。
- 以下命令查看是否安装了给定的软件包。如果是,它将显示类似下面的输出。否则,它将显示以下错误消息“Error: No matching packages to list”
- 列出系统上已安装的已废弃的软件包。
- 列出最近添加到仓库中的软件包。
- 列出可用于已安装软件包的升级包。
- 列出将被dnf autoremove命令删除的软件包。
dnf search命令使您可以根据给定的字符串查找可用软件包的列表。当你不知道要安装的确切软件包名称时,这将非常有用。 它在包数据中搜索给定的关键字。关键字作为不区分大小写的子字符串进行匹配,支持全局。默认情况下,列出与所有请求的密钥匹配的软件包。在软件包名称和摘要中搜索关键字。
- 在下面的例子中,我们将搜索ftpd字符串,看看会发生什么。
上面的输出显示了ftpd关键字的匹配字符串。
以下命令用于列出有关已安装和可用软件包的描述和摘要信息。 此命令使您可以检查有关回购中可用软件包的详细信息。它显示了有关软件包的各种信息,例如名称,Arch,版本,发行版,大小,存储库名称等。
dnf prvides命令将查找提供给定文件的软件包。如果您想找出哪个软件包(已安装或未安装)提供了此文件,这将很有用。
- 例如,我们都知道sar的使用,而我们大多数人都不知道哪个软件包提供了此文件。使用以下命令找到它。
- makecache用于下载和启用系统上当前启用的仓库的所有数据。
- 此命令检查系统是否有可用的更新。如果有可用更新,它将打印可用更新列表。
- 如果要检查更新是否可用于给定的软件包,请运行以下命令。
- 如果要在更新之前快速检查对给定软件包所做的更改,请运行以下命令。
dnf downgrade命令用于将指定的软件包降级到较低(先前)的版本。如果提供已安装软件包的任何特定版本,则它将降级为目标版本。
如果他们的软件包已经安装,则此命令用于重新安装。如果尚未安装,则会收到以下消息。
- 运行以下命令以重新安装给定的软件包。
- 相互关联的软件包列表被分组在一起。运行以下命令以列出系统上可用的软件包组。
- 此显示概述了系统上已安装并可用的组数量。
此命令显示该组中可用软件包的列表。 每个小组分为三个部分,详细信息如下:
- Mandatory Packages强制包
- Default Packages默认包
- Optional Packages可选包
运行以下命令以安装软件包组。 在这种情况下,我们将安装“开发工具”软件包组。编辑器组捆绑了许多与编辑器相关的软件包。
- 类似地,运行以下命令将软件包组更新为可用的最新版本。
- 使用以下命令删除给定的已安装软件包组。
默认情况下,当您执行各种dnf操作时,dnf会将包和存储库元数据之类的数据缓存到“/var/cache/dnf”目录中。该缓存在一段时间内会占用大量空间。这将允许您删除所有缓存的数据。
- 运行以下命令以删除从仓库数据生成的缓存文件。
- 运行以下命令以删除仓库数据。
- 运行以下命令从系统中删除所有缓存的软件包。
- 此命令可一次性完成所有上述操作。
- dnf history命令允许用户查看在过去的事务中发生了什么操作。所有交易均显示在表格中。
- 或者,您可以使用以下命令获得相同的结果。
- 显示有关历史的详细信息。如果未指定,则显示最近一次历史信息 。
- 运行以下命令以查看有关给定ID的历史详细信息。
- 对指定的ID历史操作重复执行。
- 执行与指定历史ID执行的所有操作相反的操作。
- 撤消在历史ID之后执行的所有操作。
- 你可以通过安装dnf-automatic软件包来启用自动软件包更新。为此,运行以下命令。
- 安装pacakge之后,请确保您编辑/etc/dnf/automatic.conf文件并替换apply_updates = yes而不是apply_updates = no。在配置文件中进行更改后,启用“ dnf-automatic-timer”服务。
- 最后启动服务。
dnf mark命令允许你始终将指定的程序包保留在系统上,并且在运行自动删除命令时不从系统中删除此程序包。
- 运行以下命令,将指定的软件包标记为由用户安装。
- 运行以下命令以取消将指定的软件包标记为由用户安装。
- 它在启用的存储库中搜索给定的程序包并显示信息。这等效于“rpm -q”命令。
我们在本文中添加了所有可能的选项,但是如果您正在寻找其他任何未在本文中列出的选项,请访问手册页。