智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

dnf与yum有什么不一样

1. 先来了解RPM包

RPM是一种包格式,也是一种低级包管理器。低级别的包管理器做基本的事情,他们会为你安装包,但是只有在已经安装了所有依赖项的情况下,他们才会卸载你指定已安装的软件包。他们不会为您管理依赖关系和软件仓库。 RPM和其他低级包管理器(如Debian的dpkg和Slackware的pkgtools)一样,不需要有软件仓库的存在。因此,如果您尝试使用它安装软件包但缺少依赖项,它不会自动解决,需要您下载并手动安装它。您必须自己搜索RPM依赖包,然后将下载URL指定为RPM。

dnf与yum有什么不一样

如果想详细了解yum与dnf有什么不一样的地方,可以参考本博客的总结,yum与dnf的15点区别,

点击以下文章了解详情:

dnf与yum有什么区别

2. DNF出首次出现

如果你是Fedora的粉丝,并且你升级到22版,你可能已经注意到了一个重大变化。 熟悉的(并且长期存在的)Yum包管理器已经不在了。 取而代之的是更加强大和更加智能的Dandified Yum(DNF)。

为什么要推出DNF包管理器取代yum? 以及如何使用新的软件包管理系统?

在开始介绍之前,要了解那些从不接触命令行的人(在Fedora系统上可能是很少见的),他们应该看不到异常之处。 GUI前端保持(几乎)相同 – 它仍然是一样的桌面。 但是,如果您是从命令行安装软件的粉丝,则在发出命令时会注意到新文本的快速闪烁:

yum install PACKAGENAME

yum与dnf有什么不同

3. yum被淘汰的原因

Yum被升级到DNF有三个主要原因。这些原因由来已久,而且足够严重,Yum不得不被抛弃的原因是:

  1. 一个没有文档的api——这意味着开发人员需要做更多的工作。为了让开发人员能够做他们需要做的事情,经常需要浏览Yum代码库才能编写调用。这意味着发展非常缓慢。

  2. Python 3 – fedora即将迁移到Python 3, Yum无法在此变化中存活,而DNF可以使用Python 2或Python 3运行。

  3. 破碎的依赖解决算法——长期以来,这一直是Fedora包管理器的致命弱点。DNF使用了一种最先进的基于可满足性state-of-the-art satisfiability(SAT)的依赖解决方案。这是在SUSE和openSUSE的Zypper中使用的相同类型的依赖解决程序。

简单地说,Yum已经过时了,经不起现代Fedora发行版的严格要求。

4. 为什么这是件好事?

您必须从两个不同的角度来看待这个问题:最终用户和开发人员。如果您是最终用户,从Yum切换到DNF意味着一件非常简单的事情:更可靠的体验。这种可靠性的来源是DNF优越的依赖性解决方案。现在安装软件包时,系统无法解决依赖关系的情况非常罕见。这个系统更智能。无论如何,Yum的依赖算法被破坏了。DNF的基于SAT的依赖解决程序解决了这个问题。

最终用户在安装包时也将看到更少的内存使用。安装和升级也会更快。最后一点应该特别重要。使用Yum工具运行升级的速度开始慢得令人无法接受(特别是与apt-get和zypper之类的工具相比)。

如果您是一名开发人员,转向DNF意味着您将能够更高效、更可靠地工作。所有公开的api都有文档。开发人员的另一个优势是将实现C语言。开发人员已经创建了hawkeye和librepo(用于从软件仓库下载包和元数据的C和Python库)。他们还将在未来发布更多基于c的api。考虑到C仍然是一种广泛使用的语言(目前在TIOBE索引中排名第二),这对开发人员来说应该是一个可喜的改变。

5. dnf命令是如何使用的

这就是最终用户的好消息所在。从Yum迁移到DNF只会挑战你的记忆。当您打开终端窗口运行命令行安装时,倾向于发出命令yum install PACKAGENAME。但现在情况已经不同了。同样的dandified命令将是dnf install PACKAGENAME

6. 从yum切换到dnf

在这个过程中会有一些磕磕绊绊。是的,DNF是Yum的替代品;如果您不是Yum的高级用户,那么在迁移过程中可能不会遇到任何问题。然而,还有一些问题有待发现。让我们检查旧的yum update --skip-broken命令。使用此命令时,将运行更新,但跳过所有依赖关系中断的包。另一方面,DNF默认情况下会跳过这些破损的包。为了达到这个目的,没有必要包括“跳转中断”标志。如果您需要DNF报告损坏的包,您必须运行DNF update,然后运行DNF check-update。一些用户不喜欢这种行为,因为它为曾经简单的流程添加了额外的步骤。对于高级用户来说,DNF最终可能需要比Yum更多的工作。另一方面,对于标准用户来说,DNF只不过是将yum命令换成DNF命令。

在一段时间内,从Yum迁移到DNF可能会有些尴尬,特别是当不知情的用户打开命令行并尝试使用yum时。但即便如此,你还是得到了一个警告:

Yum command has been deprecated, use dnf instead.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run 'dnf migrate'

翻译成中文意思大概是yum命令已经被废弃了,请使用dnf

很明显,有些事情已经发生了变化。然而,我确实认为,开发人员本可以在他们的警告中更加明确,而不只是老一套地说“man dnf”。相反,更接近于:

Yum命令不再使用。请在您的命令中将“yum”替换为“dnf”,以使用新的系统。

看到这样的提示,所有的终端用户都需要知道,将“yum”替换为“dnf”,这样就可以了。

思考:
Fedora团队在从Yum迁移到DNF的过程中是否走对了方向?如果没有,他们应该如何应对这种转变?

从yum切换到dnf

7. 总结

yum和DNF本质上是管理依赖关系和软件仓库的程序,然后利用RPM来实际安装,下载和删除软件包。 DNF是yum的继承者,它与yum的主要区别在于它使用了openSUSE的ZYpp包管理器中的一些库,试图提高速度并改善其他方面(尽管我执行的安装速度测试似乎表明DNF实际上比yum并没有多少的优势)。

赞(0)
未经允许不得转载:Linux入门学习到精通 » dnf与yum有什么不一样
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!