yum和dnf的区别对比
RPM概述
RPM是 一个默认的开源和最流行的包管理程序,用于基于Red Hat系统一样。该工具允许系统管理员和用户安装, 更新,卸载,查询, 验证,并在Unix/linux 操作系统管理系统软件包。该RPM原名,rpm的文件,包括由包需要编译的软件程序和库。该实用程序仅使用于该建在.rpm格式的软件包。
DNF概述
因为yum工具性能差、内存占用过多、依赖解析速度变慢等问题长期得不到解决,同时yum工具过度依赖yum源文件,若是源文件出现问题,yum相关操作可能会失败,针对这种情况,DNF工具应运而生,DNF工具克服了YUM软件管理工具的一些瓶颈,提升了用户体验、内存占用、依赖分析及运行速度等方面的内容。
YUM与DNF区别对比
DNF(DANDIFIED YUM) | YUM(YELLOWDOG UPDATER MODIFIED) |
---|---|
DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护 | YUM 使用公开的 API 来解析依赖关系 |
API 有完整的文档 | API 没有完整的文档 |
由 C、C++、Python 编写的 | 只用 Python 编写 |
DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用 | YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用 |
DNF 支持各种扩展 | Yum 只支持基于 Python 的扩展 |
API 有良好的文档,因此很容易创建新的功能 | 因为 API 没有正确的文档化,所以创建新功能非常困难 |
DNF 在同步存储库的元数据时,使用的内存较少 | 在同步存储库的元数据时,YUM 使用了过多的内存 |
DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息) | 由于使用公开 API 的原因,Yum 依赖性解析变得迟钝 |
DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新 | YUM 将在没有验证的情况下更新软件包 |
如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务 | 如果有存储库不可用,YUM 会立即停止 |
安装包的依赖关系不更新 | Yum 为这种行为提供了一个选项 |
清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包 | Yum 不会这样做 |
存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。 这个动作由系统定时器单元 dnf-makecache.timer 控制 | Yum 也会这样做 |
内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包 | Yum 不允许你删除运行中的内核 |
libsolv:用于解包和读取资源库。 hawkey: 为 libsolv 提供简化的 C 和 Python API 库。 librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。 libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。 | Yum 不使用单独的库来执行这些功能 |