DNF从Yum分支出来,使用专注于性能的C语言库hawkey进行依赖关系解析工作,大幅度提升包管理操作效率并降低内存消耗,按原先的节奏本应该是Fedora 22实现这一替代方案。但随着DNF 1.0版本的发布,这一刻终于到来。
这样的激进更新是不可避免的,主要是由于Yum不能“Python 3 as default”,而DNF支持Python 2和Python3。(Python 3分支自2008年发布以来积极开发了五年,已经成熟和稳定,而目前仍在维护的Python 2分支不增加新特性,只接受bug和安全修正,它最早的版本是在2000年发布的。)与此同时,DNF Python API和Yum是完全不同的,这两个项目中所有已知的不兼容问题也都被记录。
在Fedora 22 Core中只有DNF而Yum项目正式宣告死亡。
Yum依然可以下载到,也可同样调用软件包,以及Python API照旧。只是Yum可执行文件被重新命名为yum-deprecated,以及Yum调用的命令行被重新定向至DNF。这样你就可以在一个系统上同时保有Yum和DNF。
启动DNF项目的原因是Yum的三个陷阱:undocumented API、broken dependency solving algorithm和inability to refactor internal functions。最后被提及的问题是缺少文件链接。Yum插件可以在Yum代码中使用任何method,这会造成Yum utility因一些细小变化而突然崩溃。
DNF目标是为了避免Yum执行的错误。从一开始所有暴露的API都被适当的记录,且测试几乎包含了每一次新的提交。这个项目采用了敏捷开发,会提供用户一些优先级功能实现。
DNF现在也在极力推进Yum迁移至DNF,并改善用户体验。为了实现轻松迁移,已经将DNF迁移插件导入了包、组和事务元数据,实现从Yum至新的Fedora包管理器。