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 <package>: 您必须指定要删除的任何内容的具体版本。例如, 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 <package-name>: 这会列出所有或特定软件包;此示例列出了系统中可用的内核 RPM。

Output of # dnf list kernel command

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

Output of # dnf check-update kernel

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

Output of # dnf search

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

Output of # dnf repolist all

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

Output of # dnf list --recent

# dnf updateinfo list available# dnf updateinfo list available sec: 这些会列出 系统中所有可用的建议;包括 sec 选项将列出所有标记为“安全修复”的建议。

OUtput of # dnf updateinfo list available sec

# dnf updateinfo list available sec --sec-severity 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 选项,您可以包含严重性标记为严重、重要、中等或低的软件包。

Output of # dnf upgrade --security

总结

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

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

4 条评论

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

您好,优秀的 DNF 指南,我们已经需要它了。非常感谢。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.