DNF 给 yum 用户快速指南

DNF 软件包管理器为安装、更新和删除软件包提供了强大的功能。
286 位读者喜欢这篇文章。
Cat dropped in a box

Opensource.com

Dandified yum,更广为人知的名称是 DNF,是基于 RPM 的 Linux 发行版的软件包管理器,用于安装、更新和删除软件包。它最初在 Fedora 18 中以可测试状态(即技术预览)引入,但自 Fedora 22 以来一直是 Fedora 的默认软件包管理器。

由于它是传统 yum 软件包管理器的下一代版本,因此它比 yum 具有更高级和更强大的功能。DNF 与 yum 的一些区别特性包括:

  • 基于现代依赖关系解决技术的依赖关系计算
  • 优化的内存密集型操作
  • 能够在 Python 2 和 Python 3 中运行
  • 完整的 Python API 文档

DNF 使用 hawkey 库,该库解决 RPM 依赖关系,以便在客户端计算机上运行查询。这些库构建在 libsolv 之上,libsolv 是一个使用可满足性算法的软件包依赖关系求解器。您可以在 libsolv 的 GitHub 仓库中找到有关该算法的更多详细信息。

DNF 和 yum 中不同的 CLI 命令 

以下是在 DNF 中您会发现的 yum 命令行界面 (CLI) 的一些更改。

dnf updatednf upgrade:执行 dnf update 或 dnf upgrade 在系统中具有相同的效果:两者都更新已安装的软件包。但是,建议使用 dnf upgrade,因为它与 yum --obsoletes update 的工作方式完全相同。

resolvedep:此命令在 DNF 中不存在。相反,执行 dnf provides 以找出哪个软件包提供了特定文件。

deplist:Yum 的 deplist 命令(列出 RPM 依赖项)已在 DNF 中删除,因为它使用软件包依赖关系求解器算法来解决依赖关系查询。

dnf remove <软件包>:您必须指定要删除的任何内容的具体版本。例如,dnf remove kernel 将删除所有名为“kernel”的软件包,因此请确保使用类似 dnf remove kernel-4.16.x 的命令。

dnf history rollback:此检查会撤消您指定的事务之后的事务,由于并非 RPM 数据库工具中的所有可能更改都存储在事务历史记录中,因此已删除此检查。

--skip-broken:此安装命令(检查软件包是否存在依赖关系问题)在 yum 中使用 --skip-broken 触发。但是,现在它默认是 dnf update 的一部分,因此不再需要它。

-b, --best:这些开关选择事务中可用的最佳软件包版本。在 dnf upgrade 期间(默认情况下会跳过因依赖关系原因而无法安装的更新),此开关强制 DNF 仅考虑最新的软件包。使用 dnf upgrade --best

--allowerasing:允许擦除已安装的软件包以解决依赖关系。此选项可以用作 yum swap X Y 命令的替代方案,其中要删除的软件包未明确定义。

例如:dnf --allowerasing install Y

--enableplugin:此开关无法识别且已被删除。

DNF Automatic

DNF Automatic 工具是 dnf upgrade 的替代 CLI。它可以从 systemd 计时器、cron 作业等自动定期执行,用于自动通知、下载或更新。

要开始使用,请安装 dnf-automatic rpm 并启用 systemd 计时器单元 (dnf-automatic.timer)。它的行为由默认配置文件(即 /etc/dnf/automatic.conf)指定。

# yum install dnf-automatic
# systemctl enable dnf-automatic.timer
# systemctl start dnf-automatic.timer
# systemctl status dnf-automatic.timer

Result of # systemctl enable dnf-automatic.timer

下面列出了覆盖默认配置的其他计时器单元。选择满足您系统要求的那个。

  • dnf-automatic-notifyonly.timer:通知可用的更新
  • dnf-automatic-download.timer:下载软件包,但不安装它们
  • dnf-automatic-install.timer:下载并安装更新

用于软件包管理的基本 DNF 命令

# yum install dnf:这会从 yum 软件包管理器安装 DNF RPM。

Output of # yum install dnf

# dnf –version:这会指定 DNF 版本。

Output of # dnf --version

# dnf list all# dnf list <软件包名称>:这会列出所有或特定软件包;此示例列出了系统中可用的 kernel RPM。

Output of # dnf list kernel command

# dnf check-update# dnf check-update kernel:这会查看系统中的更新。

Output of # dnf check-update kernel

# dnf search <软件包名称>:当您通过 DNF 搜索特定软件包时,它将搜索完全匹配项以及存储库中可用的所有通配符搜索。

Output of # dnf search

# dnf repolist all:这会下载并列出系统中所有已启用的存储库。

Output of # dnf repolist all

# dnf list --recent# dnf list --recent <软件包名称>--recent 选项会转储系统中所有最近添加的软件包。其他列表选项包括 --extras--upgrades--obsoletes

Output of # dnf list --recent

# dnf updateinfo list available# dnf updateinfo list available sec:这些命令列出系统中所有可用的通告;包括 sec 选项将列出所有标记为“security fix”的通告。

OUtput of # dnf updateinfo list available sec

# dnf updateinfo list available sec --sec-severity Critical:这会列出系统中所有标记为“critical”的安全通告。

Output of # dnf updateinfo list available sec --sec-severity Critical

# dnf updateinfo FEDORA-2018-a86100a264 –info:这会通过 --info 开关验证任何通告的信息。

Output of # dnf updateinfo FEDORA

# dnf upgrade --security# dnf upgrade --sec-severity Critical:这会应用系统中所有可用的安全通告。使用 --sec-severity 选项,您可以包含严重性标记为 Critical、Important、Moderate 或 Low 的软件包。

Output of # dnf upgrade --security

总结

这些只是 DNF 的一小部分功能、更改和命令。有关 DNF 的 CLI、新插件和 hook API 的完整信息,请参阅 DNF 指南。 

标签
Avatar
Amit 在 Red Hat 工作,并且对 RHEL、Linux、内核及其子系统、调优和故障排除充满热情。

4 条评论

谢谢。很棒的文章。我最近一直在使用 Fedora 28,我很喜欢它。这是有用的信息。

你好,非常棒的 DNF 指南,我们已经需要它了。非常感谢。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.