Linux软件包管理器DNF和YUM的区别,为什么用DNF代替YUM?

命令坞
命令坞
命令坞
95
文章
2
评论
2020-05-0314:30:34 评论 144 1563字

Linux软件包管理器DNF和YUM的区别,为什么用DNF代替YUM?

Yum软件包管理器已由DNF软件包管理器代替,因为Yum中许多长期存在的问题仍未解决。

这些问题包括性能不佳,内存使用过多,依赖性解析速度变慢。

DNF使用“ libsolv”进行依赖关系解析,由SUSE开发和维护以提高性能。

它主要是用python编写的,并且它有应对依赖关系解析的方式。

其API尚未完整记录,其扩展系统仅允许使用Python插件。

Yum是用于rpm的前端工具,它管理依赖项和存储库,然后使用RPM来安装,下载和删除软件包。

他们为什么要构建一个新工具而不是解决现有问题?

Ales Kozamblak解释说,修复在技术上不可行,并且yum团队还没有准备好立即接受更改。

此外,最大的挑战是YUM的行数为56K,而DNF的行数仅为29K。

因此,除了前叉之外,没有其他方法可以修复它。

但是,yum工作正常。

序号 DNF (Dandified YUM) YUM (Yellowdog Updater, Modified)
1 DNF使用libsolv进行依赖关系解析,由SUSE开发和维护。 YUM使用公共API进行依赖关系解析
2 API已完全记录 API尚未完全记录
3 它是用C,C ++,Python编写的 它仅用Python编写
4 DNF当前在Fedora,Red Hat Enterprise Linux 8(RHEL),CentOS 8,OEL 8和Mageia 6/7中使用。 YUM当前用于Red Hat Enterprise Linux 6/7(RHEL),CentOS 6/7,OEL 6/7。
5 DNf支持各种扩展 Yum仅支持基于Python的扩展
6 该API有充分的文档记录,因此可以轻松创建新功能 由于没有正确记录API,因此很难创建新功能。
7 同步存储库的元数据时,DNF使用较少的内存。 在同步存储库的元数据时,YUM使用过多的内存。
8 DNF使用可满足性算法来解决依赖关系解析(它使用字典方法来存储和检索包及依赖关系信息)。 由于公共API,Yum依赖项解析变得缓慢。
9 就内存使用率和存储库元数据的依存关系解析而言,所有性能都很好。 总体而言,许多方面的表现都很差。
10 DNF更新:如果软件包在DNF更新过程中包含无关的依赖项,则不会更新该软件包。 YUM将更新软件包而不进行验证。
11 如果启用的存储库没有响应,则dnf将跳过它并继续使用可用存储库进行事务。 如果存储库不可用,则YUM将立即停止。
12 dnf更新和dnf升级相等。 YUM就不同了
13 软件包安装的依赖关系未更新 YUM为这种行为提供了一个选择
14 清理软件包删除:删除软件包时,dnf会自动删除用户未明确安装的所有依赖软件包。 YUM没有这样做
15 Repo Cache更新计划:默认情况下,系统启动后十分钟,dnf每小时检查一次已配置存储库的更新。此操作由名为“ /usr/lib/systemd/system/dnf-makecache.timer”的系统计时器单元控制。 YUM也这样做。
16 内核软件包不受dnf保护。与Yum不同,您可以删除所有内核程序包,包括正在运行的程序包。 Yum不允许您删除正在运行的内核
17 libsolv:用于解决软件包和读取存储库。

hawkey:hawkey,为libsolv提供简化的C和Python API的库。

librepo:提供C和Python(类似于libcURL)API的库,用于下载linux存储库元数据和软件包。

libcomps:Libcomps是yum.comps库的替代方案。它是用纯C语言编写的库,并且有python2和python3的绑定

Yum不使用单独的库来执行此功能。
18 DNF包含29k行代码 YUM包含56k行代码
19 DNF由Ales Kozumplik开发 YUM由Zdenek Pavlas,Jan Silhan和团队成员开发

关于YUM和RPM软件包管理器的区别 请点这里

命令坞
Linux Mint 20 发布前一窥 最新资讯

Linux Mint 20 发布前一窥

Ubuntu 20.04 LTS 版本发布了。这对 Linux Mint 用户来说也是一个好消息。一个新的 Ubuntu LTS 版本意味着新的 Linux Mint 主要版本也将很快随之出现。 为什...
使用 AppImage 进行 Linux 软件包管理 分享

使用 AppImage 进行 Linux 软件包管理

AppImage 在自足的环境中分发应用, 它适用于任何 Linux 发行版。 管理 Linux 机器(尤其是远程机器)的一个重要分就是管理和安装软件。当本地应用程序出现问题时,或者文件系统上的某些文...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: