1. 先来了解RPM包
RPM是一种包格式,也是一种低级包管理器。低级别的包管理器做基本的事情,他们会为你安装包,但是只有在已经安装了所有依赖项的情况下,他们才会卸载你指定已安装的软件包。他们不会为您管理依赖关系和软件仓库。 RPM和其他低级包管理器(如Debian的dpkg和Slackware的pkgtools)一样,不需要有软件仓库的存在。因此,如果您尝试使用它安装软件包但缺少依赖项,它不会自动解决,需要您下载并手动安装它。您必须自己搜索RPM依赖包,然后将下载URL指定为RPM。
如果想详细了解yum与dnf有什么不一样的地方,可以参考本博客的总结,yum与dnf的15点区别,
点击以下文章了解详情:
2. DNF出首次出现
如果你是Fedora的粉丝,并且你升级到22版,你可能已经注意到了一个重大变化。 熟悉的(并且长期存在的)Yum包管理器已经不在了。 取而代之的是更加强大和更加智能的Dandified Yum(DNF)。
为什么要推出DNF包管理器取代yum? 以及如何使用新的软件包管理系统?
在开始介绍之前,要了解那些从不接触命令行的人(在Fedora系统上可能是很少见的),他们应该看不到异常之处。 GUI前端保持(几乎)相同 – 它仍然是一样的桌面。 但是,如果您是从命令行安装软件的粉丝,则在发出命令时会注意到新文本的快速闪烁:
yum install PACKAGENAME
3. yum被淘汰的原因
Yum被升级到DNF有三个主要原因。这些原因由来已久,而且足够严重,Yum不得不被抛弃的原因是:
-
一个没有文档的api——这意味着开发人员需要做更多的工作。为了让开发人员能够做他们需要做的事情,经常需要浏览Yum代码库才能编写调用。这意味着发展非常缓慢。
-
Python 3 – fedora即将迁移到Python 3, Yum无法在此变化中存活,而DNF可以使用Python 2或Python 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的过程中是否走对了方向?如果没有,他们应该如何应对这种转变?
7. 总结
yum和DNF本质上是管理依赖关系和软件仓库的程序,然后利用RPM来实际安装,下载和删除软件包。 DNF是yum的继承者,它与yum的主要区别在于它使用了openSUSE的ZYpp包管理器中的一些库,试图提高速度并改善其他方面(尽管我执行的安装速度测试似乎表明DNF实际上比yum并没有多少的优势)。
评论前必须登录!
注册