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 update 或 dnf 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 命令的替代方法,在 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

下面列出了覆盖默认配置的其他计时器单元。选择满足您系统要求的计时器单元。
- dnf-automatic-notifyonly.timer:通知可用的更新
- dnf-automatic-download.timer:下载软件包,但不安装它们
- dnf-automatic-install.timer:下载并安装更新
用于软件包管理的基本 DNF 命令
# yum install dnf:这会从 yum 软件包管理器安装 DNF RPM。

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

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

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

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

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

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

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

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

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

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

总结
这些只是 DNF 的功能、更改和命令中的一小部分。有关 DNF 的 CLI、新插件和钩子 API 的完整信息,请参阅 DNF 指南。
4 条评论