DNF - 面向基于 RPM 的系统的下一代软件包管理工具
在基于 RPM 的发行版的世界中,保持软件包更新对于维护系统安全性和稳定性至关重要。幸运的是,dnf 提供了一个功能强大且用户友好的软件包管理工具来管理软件更新。在这篇博文中,我们将探讨 dnf 的功能以及它如何改进其前身 yum。
什么是 DNF?
DNF 是面向基于 RPM 的 Linux 发行版的下一代软件包管理工具。它是一个现代的开源软件包管理器,旨在简化用户在其系统上管理软件包的操作。DNF 代表“Dandified Yum”,它是对它的前身 Yum 的一种引用。
DNF 最初在 Fedora 18 中推出,从那时起,它已成为许多基于 RPM 的 Linux 发行版(包括 Fedora、CentOS 8 和 RHEL 8)的默认软件包管理器。DNF 基于与 Yum 相同的代码库,但进行了许多改进,包括更好的性能、增强的安全性以及更友好的用户界面。
为什么需要 DNF?
在我们深入探讨 DNF 的技术细节之前,让我们花一点时间来了解它最初创建的原因。答案在于旧的 Yum 软件包管理器的缺点。
Yum 在基于 RPM 的发行版还处于起步阶段时就被设计出来。它是一个简单的工具,可以帮助用户管理其系统上的软件包,但它有一些限制。例如,它速度慢,处理依赖项的能力不强,并且容易出错。
随着时间的推移,基于 RPM 的发行版变得越来越流行和复杂,Yum 的局限性也变得更加明显。开发人员和用户都开始寻找更好的软件包管理器来解决这些问题。
这就是 DNF 的用武之地。DNF 从一开始就被设计成一个现代化、可靠且易于使用的软件包管理器。它使用与 Yum 相同的 RPM 软件包格式,但进行了许多改进,使其成为一个更优秀的工具。
DNF 如何工作?
既然我们了解了 DNF 创建的原因,那么让我们看看它是如何工作的。从本质上讲,DNF 是一个命令行工具,允许用户管理其系统上的软件包。它可用于安装、更新和删除软件包,以及搜索软件包和列出已安装的软件包。
DNF 的关键特性之一是它支持插件。插件是可以以各种方式扩展 DNF 功能的模块。例如,有一些插件可以帮助进行缓存、性能调整和调试。可以使用 DNF 配置文件安装和配置插件。
DNF 的另一个关键特性是它使用了模块化存储库。模块化存储库是根据其功能组合在一起的软件包集合。例如,可能有一个用于 Web 服务器的模块、一个用于数据库服务器的模块以及一个用于开发工具的模块。每个模块都包含一组经过测试和验证以协同工作的软件包。
模块化存储库使用户更容易管理其软件包,因为他们可以选择仅启用所需的模块。这有助于降低冲突的风险,并确保系统上的软件包是最新的和安全的。
使用 DNF
现在我们了解了 DNF 的工作原理,让我们看看如何使用它。DNF 可以从命令行或通过图形界面(例如 GNOME 软件应用程序)使用。
要使用 DNF 安装软件包,只需键入以下命令:
dnf install package_name
例如,要安装 Apache Web 服务器,您将键入:
dnf install httpd
然后,DNF 将下载并安装软件包以及所需的任何依赖项。
要使用 DNF 更新软件包,请键入以下命令:
dnf update package_name
例如,要更新 Apache Web 服务器,您将键入:
dnf update httpd
然后,DNF 将检查更新,并下载和安装任何可用的更新。
要使用 DNF 删除软件包,请键入以下命令:
dnf remove package_name
例如,要删除 Apache Web 服务器,您将键入:
dnf remove httpd
然后,DNF 将删除软件包以及不再需要的任何依赖项。
DNF 还有许多其他命令和选项可用于管理系统上的软件包。例如,您可以使用 search 命令搜索软件包,使用 info 命令获取有关软件包的信息,以及使用 list 命令列出所有已安装的软件包。
DNF 与其他软件包管理器的比较
DNF 是面向基于 RPM 的 Linux 发行版的几个软件包管理器之一。Yum、Zypper 和 Apt-RPM 是其他流行的软件包管理器。以下是 DNF 与这些其他软件包管理器之间的一些区别:
Yum - Yum 是 DNF 的前身,已经存在了十多年。DNF 的创建是为了解决 Yum 的一些限制,例如性能缓慢、缺乏依赖项解析以及有限的插件体系结构。虽然 Yum 仍用于某些较旧版本的基于 RPM 的发行版中,但 DNF 是较新版本中推荐的软件包管理器。
Zypper - Zypper 是 SUSE Linux Enterprise 和 openSUSE 发行版的默认软件包管理器。与 DNF 一样,它具有插件体系结构并支持并行下载软件包。但是,DNF 通常被认为比 Zypper 更快、更可靠,尤其是在依赖项解析方面。
Apt-RPM - Apt-RPM 是面向基于 RPM 的发行版的 Debian 软件包管理器 (APT) 的移植版本。它具有与 APT 类似的命令行界面和语法,但在 RPM 特定功能(如增量 RPM 和软件包签名)方面存在一些限制。DNF 通常被认为是管理基于 RPM 的发行版的更好选择。
总的来说,DNF 是一款现代化、可靠且易于使用的软件包管理器,与其他软件包管理器相比,它具有许多优势。
如何安装和配置 DNF
安装和配置 DNF 非常简单。以下是步骤:
检查您的系统要求 - DNF 需要至少 1GB 的 RAM 和 10GB 的可用磁盘空间。
安装 DNF - 要在基于 Fedora 的系统上安装 DNF,请运行以下命令:
sudo dnf install dnf
要安装 Red Hat Enterprise Linux 或 CentOS 系统上的 DNF,您需要先启用 EPEL 存储库:
sudo yum install epel-release sudo yum install dnf
配置 DNF - DNF 通过 /etc/dnf/dnf.conf 文件进行配置。以下是一些基本的配置选项
installonly_limit - 设置系统上保留的旧版本软件包的最大数量。默认值为 3。
clean_requirements_on_remove - 删除删除软件包时不再需要的依赖项。默认值为 True。
gpgcheck - 启用或禁用软件包签名验证。默认值为 True。
max_parallel_downloads - 设置一次下载的软件包的最大数量。默认值为 3。
您还可以通过在 /etc/yum.repos.d/ 目录中创建文件来配置各个存储库。以下是 Fedora Updates 存储库的存储库文件示例:
[fedora-updates] name=Fedora $releasever - $basearch - Updates metadata_expire=6h mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
如何创建自己的 DNF 插件
创建您自己的 DNF 插件也相对容易。以下是步骤:
创建插件目录 - 在 /usr/lib/dnf/plugins/ 中创建一个具有描述性名称的插件目录。例如:
sudo mkdir /usr/lib/dnf/plugins/myplugin
为您的插件创建 Python 文件 - 在您的插件目录中创建一个具有描述性名称和 .py 扩展名的 Python 文件。例如:
sudo nano /usr/lib/dnf/plugins/myplugin/myplugin.py
定义您的插件类 - 在您的 Python 文件中,定义一个继承自 dnf.Plugin 类的插件类。以下是一个示例:
from dnf.plugins import Plugin class MyPlugin(Plugin): name = 'myplugin' def __init__(self, base, cli): super(MyPlugin, self).__init__(base, cli)
实现您的插件逻辑 - 向您的类添加方法以实现插件的功能。例如:
def posttrans(self): print("My plugin was called after a transaction was completed!")
注册您的插件 - 在您的 Python 文件中,添加对 dnf.plugin.register() 函数的调用以注册您的插件。例如:
from dnf.plugins import Plugin, plugin class MyPlugin(Plugin): name = 'myplugin' def __init__(self, base, cli): super(MyPlugin, self).__init__(base, cli) def posttrans(self): print("My plugin was called after a transaction was completed!") plugin.register(MyPlugin)
测试您的插件 - 使用 --verbose 和 --debugsolver 选项运行 DNF 以查看是否正在调用您的插件。例如:
sudo dnf update --verbose --debugsolver
您应该在输出中看到您的插件被加载和调用。
结论
DNF 是面向基于 RPM 的 Linux 发行版的下一代软件包管理工具。与以前的软件包管理器(如 Yum)相比,它具有许多优势,包括更快的性能、更好的依赖项解析以及更灵活的插件体系结构。使用 DNF,您可以轻松安装、更新和删除系统上的软件包,以及创建自己的插件以扩展其功能。
通过遵循本文档中概述的步骤,您应该能够在系统上安装和配置 DNF,以及创建您自己的 DNF 插件。无论您是系统管理员、开发人员还是 Linux 爱好者,DNF 都是一个功能强大且用途广泛的工具,可以帮助您更有效地管理系统。