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 <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

以下列出了覆盖默认配置的其他计时器单元。选择满足您系统要求的那个。
- 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 <package-name>: 这会列出所有或特定软件包;此示例列出了系统中可用的内核 RPM。

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

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

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

# dnf list --recent 或 # dnf list --recent <package-name>: --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、新插件和 hook API 的完整信息,请参阅 DNF 指南。
4 条评论