先来了解RPM包
RPM是一种包格式,也是一种低级包管理器。低级别的包管理器做基本的事情,他们会为你安装包,但是只有在已经安装了所有依赖项的情况下,他们才会卸载你指定已安装的软件包。他们不会为您管理依赖关系和软件仓库。 RPM和其他低级包管理器(如Debian的dpkg和Slackware的pkgtools)一样,不需要有软件仓库的存在。因此,如果您尝试使用它安装软件包但缺少依赖项,它不会自动解决,需要您下载并手动安装它。您必须自己搜索RPM依赖包,然后将下载URL指定为RPM。
DNF出首次出现
如果你是Fedora的粉丝,并且你升级到22版,你可能已经注意到了一个重大变化。 熟悉的(并且长期存在的)Yum包管理器已经不在了。 取而代之的是更加强大和更加智能的Dandified Yum(DNF)。
为什么要推出DNF包管理器取代yum? 以及如何使用新的软件包管理系统?
在开始介绍之前,要了解那些从不接触命令行的人(在Fedora系统上可能是很少见的),他们应该看不到异常之处。 GUI前端保持(几乎)相同 – 它仍然是一样的桌面。 但是,如果您是从命令行安装软件的粉丝,则在发出命令时会注意到新文本的快速闪烁。
yum被淘汰的原因
Yum被升级到DNF有三个主要原因。这些原因由来已久,而且足够严重,Yum不得不被抛弃的原因是:
一个没有文档的api——这意味着开发人员需要做更多的工作。为了让开发人员能够做他们需要做的事情,经常需要浏览Yum代码库才能编写调用。这意味着发展非常缓慢。
3 – fedora即将迁移到Python 3, Yum无法在此变化中存活,而DNF可以使用Python 2或Python 3运行。
破碎的依赖解决算法——长期以来,这一直是Fedora包管理器的致命弱点。DNF使用了一种最先进的基于可满足性state-of-the-art satisfiability(SAT)的依赖解决方案。这是在SUSE和openSUSE的Zypper中使用的相同类型的依赖解决程序。
简单地说,Yum已经过时了,经不起现代Fedora发行版的严格要求。
dnf的优势在哪里?
您必须从两个不同的角度来看待这个问题:最终用户和开发人员。如果您是最终用户,从Yum切换到DNF意味着一件非常简单的事情:更可靠的体验。这种可靠性的来源是DNF优越的依赖性解决方案。现在安装软件包时,系统无法解决依赖关系的情况非常罕见。这个系统更智能。无论如何,Yum的依赖算法被破坏了。DNF的基于SAT的依赖解决程序解决了这个问题。
最终用户在安装包时也将看到更少的内存使用。安装和升级也会更快。最后一点应该特别重要。使用Yum工具运行升级的速度开始慢得令人无法接受(特别是与apt-get和zypper之类的工具相比)。
如果您是一名开发人员,转向DNF意味着您将能够更高效、更可靠地工作。所有公开的api都有文档。开发人员的另一个优势是将实现C语言。开发人员已经创建了hawkeye和librepo(用于从软件仓库下载包和元数据的C和Python库)。他们还将在未来发布更多基于c的api。考虑到C仍然是一种广泛使用的语言(目前在TIOBE索引中排名第二),这对开发人员来说应该是一个可喜的改变。
dnf命令是如何使用的?
这就是最终用户的好消息所在。从Yum迁移到DNF只会挑战你的记忆。当您打开终端窗口运行命令行安装时,倾向于发出命令yum install php。但现在情况已经不同了。同样的dandified命令将是dnf install php。
从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 instead.
See 'man dnf' and 'man yum2dnf' for more information.
To transfer transaction metadata from yum to DNF, run ' migrate'
翻译成中文意思大概是yum命令已经被废弃了,请使用dnf
很明显,有些事情已经发生了变化。然而,我确实认为,开发人员本可以在他们的警告中更加明确,而不只是老一套地说“man dnf”。相反,更接近于:
Yum命令不再使用。请在您的命令中将“yum”替换为“dnf”,以使用新的系统。
看到这样的提示,所有的终端用户都需要知道,将“yum”替换为“dnf”,这样就可以了。
yum和DNF本质上是管理依赖关系和软件仓库的程序,然后利用RPM来实际安装,下载和删除软件包。 DNF是yum的继承者,它与yum的主要区别在于它使用了openSUSE的ZYpp包管理器中的一些库,试图提高速度并改善其他方面(尽管我执行的安装速度测试似乎表明DNF实际上比yum并没有多少的优势)。

订阅
提醒
guest
0 评论
内联反馈
查看所有评论