DNF – 基于 RPM 的发行版的下一代包管理实用程序
最近一则新闻引起了众多 Linux 用户、专业人士和学习者的注意:“ DNF ”(官方意思是“无”)将取代使用 RPM 包管理器的发行版(如 Fedora、CentOS、RedHat 等)中的“ YUM ”包管理实用程序。
这个消息相当令人惊讶,软件包管理器或多或少与 Linux 发行版的身份相关,负责安装、更新和删除软件包。
YUM(代表Yellowdog Updater,Modified)是一款免费的开源命令行实用程序,根据 GNU 通用公共许可证发布,主要用 Python 编程语言编写。YUM 是由杜克大学为管理和更新 RedHat Linux 而开发的,后来它得到了广泛的认可,并成为 RedHat Enterprise Linux、Fedora、CentOS 和其他基于 RPM 的 Linux 发行版的软件包管理器。它通常被Linux 专业人士非正式地称为“您的软件包管理器”。
另请阅读
用 DNF 替代 Yum 的想法
DNF 项目的开发者Ale¨ Kozumplík是一名 RedHat 员工。他说:
“2009 年,在开发‘ Anaconda ’(系统安装程序)时,他第一次对 Linux 的工作原理有了深刻的了解。他想从事一个完全不同的项目,这让他可以探索 Fedora 的打包工具。”
Ale¨ Kozumplík 说——他已经厌倦了解释 DNF 代表什么,它是一个包管理器名称,答案就是它,没有别的。它必须被命名为不与YUM冲突的名字,因此它被命名为DNF。
Yum 的缺点导致了 DNF 的诞生:
- YUM 的依赖关系解析是一场噩梦,在 DNF 中使用 SUSE 库“libsolv”和 Python 包装器以及 C Hawkey 进行了解决。
- YUM 没有记录的 API。
- 构建新功能很困难。
- 不支持除 Python 之外的扩展。
- 内存减少,元数据自动同步减少——这是一个耗时的过程。
Ale¨ Kozumplík 表示,他别无选择,只能分叉 YUM 并开发 DNF。YUM 软件包维护者尚未准备好实施这些更改。YUM 有大约59000 LOC,而 DNF 有29000 LOC(代码行数)。
DNF 开发
DNF 首次出现在 Fedora 18 中。Fedora 20 是第一个欢迎用户使用 DNF 功能代替 YUM 的 Linux 发行版。
DNF 目前面临的技术挑战是实现 YUM 的所有功能。对于普通用户,DNF 提供软件包下载、安装、更新、降级和删除功能。但是,对于以下功能的支持仍然很少或根本不支持:安装过程中跳过损坏的软件包、调试、详细输出、启用 repo、安装过程中排除软件包等。
DNF与前作对比:
- –skip-broken开关无效。
- 命令更新 = 升级
- 命令solvedep不可用
- 默认情况下, skip_if_unavailable选项处于开启状态
- 依赖关系解析过程在命令行中不可见。
- 未来版本中将提供并行下载。
- 撤消历史记录
- 增量转速
- Bash 补全
- 自动删除等等。
DNF 与 Fedora 的集成以及后来在商业环境中的集成不时受到 RHEL 的质疑。最新版本是DNF 0.6.0,于 2014 年 8 月 12 日发布。
测试 DNF 命令
使用 yum 命令在 RHEL/CentOS 上的 fedora 或更高版本上安装 dnf。
# yum install dnf
用法概要。
dnf [options] <command> [<argument>]
安装程序包。
# dnf install <name_of_package>
删除包。
# dnf remove <name_of_package>
更新并升级系统。
# dnf update # dnf upgrade
注意:如上所述,更新=升级。那么,这个包是否会实现类似滚动发布的东西?——一个未来的问题。
dnf 配置文件的默认位置:/etc/dnf/dnf.conf。
项目的未来
该项目旨在提高透明度并全面记录项目。该项目还处于起步阶段,需要社区的支持才能整合该项目。许多功能仍需移植,这需要时间。DNF 将与 Fedora 22 一起正式发布。
现在就这些了。我很快会再次在这里发布另一篇有趣的文章。在此之前,请继续关注并保持联系。不要忘记在下面的评论中向我们提供您宝贵的反馈。