1. 前言
因长期存在的问题没有被解决,yum已经被dnf取代。 为什么呢?Aleš Kozumplík解释说,技术上很难给yum打补丁,yum代码有56K行,但DNF的代码行数仅有29K。 因此,除了fork之外,没有进一步开发的选择。
2. dnf与yum的15点区别
- DNF使用libsolv进行依赖解析,这是由SUSE创建和维护的。 YUM使用公共API来解决依赖关系
- dnf API文件正确,而yum并没有文档
- dnf支持更多的扩展,而yum只支持Python扩展。
- 因为有API,所以dnf更容易构建新特性,而yum构建新特性将会非常困难。
- DNF使用更低的内存和更少的元数据与软件仓库的自动同步。YUM使用高内存和元数据与软件仓库的自动同步
- DNF更新:如果包在DNF更新操作期间具有未满足的依赖项,则不会更新该包。而yum并不会这样做。
- 如果启用的软件仓库没有响应,DNF将跳过它并使用可用仓库继续进行事务。而当仓库不可用时,yum会立即停止工作。
dnf update
和dnf upgrade
是等价的,而yum是区分的。- dnf安装软件包,默认情况下依赖关系并不会升级,yum则提供选项支持该功能。
- 删除包时,DNF将自动删除所有未由用户主动安装的依赖包。yum不会这样做。
- 仓库缓存刷新计划,默认情况下,dnf 将每小时检查配置软件仓库中的更新,在系统启动后十分钟开始。操作由systemd定时器单元控制,/usr/lib/systemd/system/dnf-makecache.timer。这点yum一样。
- 内核包不受dnf保护。与yum不同,您可以使用dnf删除所有内核包,包括正在运行的包。
- 在dnf中,libsolv用于解决包和读取仓库的问题。hawkey库向libsolv库提供简单的C和Python API。librepo库提供C和Python(类似于libcURL)API用于下载Linux软件仓库元数据和包。
Libcomps是备选的yum.comps库。它作为纯C写的库与python2和phthon3绑定。yum不使用这样的方式,而是采用单独的库文件来实现类似的功能。 - dnf的代码行数为29K,而yum的代码行数为56K
- dnf上Aleš Kozumplík开发,而yum的开发者是Zdeněk Pavlas和Jan Šilhan及他的团队。
3. 总结
本文主要介绍了dnf和yum有什么不同之处。红帽很有可能在下一代的RHEL系统上默认集成dnf,现在是切换到dnf的适合时候了。
评论前必须登录!
注册