为什么没有真正的Linux统一软件包管理器?


31

为什么没有充当最终用户和下面的低级封装管理器(之间的界面的统一包管理器aptyastpacman等)?

是很难做到并因此不切实际,还是存在真正的障碍使其无法实现?


14
我的猜测是,在获得统一的程序包经理之前,我们将早已获得统一的现场理论 ...


2
出于完全相同的原因,我们不需要单一发行版-我喜欢我的发行版的发行方式。如果您不这样做,则可以自由使用另一个或自己编写。在不知不觉中,您拥有与程序员一样多的软件包管理器。
new123456

2
您不是说低级软件包管理器的rpm,dep,source吗?您列出的人本身就是前端。
frogstarr78,2011年

Answers:


35

首先是。问题不是没有统一的程序包管理器,而是有十个程序包,这很严重。

让我们来看看我的最爱:poldek。它是包管理用户前端,可以在几个不同的发行版运行和管理两种rpmdeb包。Poldek不会执行rpm所做的工作(它将内容留给rpm),而只是发送正确的命令,而无需用户找出所有麻烦。

但是问题并不仅限于此。每个人对于用户前端的外观,应如何运行以及应提供哪些选项都有不同的想法。所以其他人都写了自己的。实际上,当今人们在常见发行版中使用的许多软件包前端管理器都能够处理多个后端。

然而,最终,问题(或优势)是人们喜欢事物按照自己想要的方式正常运行,而不是以某种试图让所有人满意而又未能真正使每个人感到高兴的超时尚的方式。这就是为什么我们首先拥有数量众多的Gazillion发行版的原因。这就是我们拥有这么多不同的桌面环境和窗口管理器的原因(事实上这些东西实际上是完全不同的东西)。

关于编写通用软件包或让管理者了解所有软件包或具有将一个软件包相互转换的api的方法,仍然存在着许多出色的建议……但是最终,根据其哲学,Unix最好使用……每个工具做一件事,做得好

任何时候只要您拥有一种工具可以尝试完成一项以上的工作,那它最终就会变得不如其中之一。例如,poldek糟透了处理deb程序包的依赖关系。


1
我要说的差不多。坦率地说,只要某些东西在后台进行良好的互操作(例如,通过遵循LSB标准),我就不会真正看到问题所在。
2011年

10
++表示“ UNIX在以下情况下是最佳的……每个工具都做一件事情并且做得很好”。有时我认为有太多工具无法实现这一目标……
ktf

放一个链接到poldek.pld-linux.org ---可能对研究2005
。– sorin

10

简而言之:因为每个发行版都使用不同的软件包管理方法。它们根本不兼容。最适合Ubuntu的管理策略在Arch等方面几乎没有意义。“通用”(独立于发行版)的程序包管理器只是用户界面的另一层,永远无法像每个发行版的特定管理器一样出色。

因此,使用您自己的语言很难做到,因此不切实际 -也因为几乎没有人会从中受益。


软件包管理解决方案可移植到其他系统。我在debian上看到过可移植的东西。但是,游戏的名称是寻找对用户有用的内容。将portage设为ubuntu的默认设置没有多大意义。到目前为止,我们似乎做得还不错。
Silverfire

8

主要是历史原因。大约在同一时间建立了多个软件包管理系统,特别是.rpm和.deb。每个人都有自己的拥护者,每个人都足够优秀,以至于没有任何一个软件包管理者具有明显的优势。发行商肯定不会完全重建他们的系统以实施其他程序包管理器。

这也将要求重建系统中的每个软件包(在debian中为10,000个)。它还需要实施一个平滑的迁移系统,以便该系统的用户可以从旧的软件包管理器转到新的软件包管理器。迁移的工作量将是不可行的,并且要测试迁移量将成倍增加,因此几乎可以肯定会遇到很多故障。这将引起许多愤怒的赌徒。

每个发行版都基于为该发行版构建的内容维护自己的一组依赖关系。通用软件包存储库将很难在发行版之间进行协调,因为几乎肯定会发生依赖性冲突。因此,无论如何在实践中都不可能实现统一包装管理系统(通用包装)的实际利益。

最后,谁来选择通用标准软件包管理器?OP注释中引用的XKCD漫画总结了这种练习中常见的故障模式。对这类事情进行标准化将具有很大的政治意义,并可能导致某些事情无法使用,或者存在严重缺陷,以至于如果各方可以达成协议,则又会为标准产生另一轮麻烦。

因此,基本上可以归结为:太政治化,太艰辛,太冒险了,这样做没有任何好处。


8

你所说的

充当最终用户与底层低杠杆软件包管理器之间的接口

听起来像PackageKit的我,一点即是

PackageKit是一个旨在简化计算机上安装和更新软件的系统。主要设计目标是统一用于不同发行版的所有软件图形工具,并使用一些最新技术(例如PolicyKit)来减少流程。

编辑: 请参阅此处以获取受支持的后端列表。 编辑2:删除了无用的备注。


6

首先,要了解“ Linux”不是操作系统。它是一个内核。程序包管理器是操作系统级别的概念,而不是内核级别的概念。因此,要求为Linux提供统一的软件包管理器并不是很明智的选择。

但是,如果您问为什么使用Linux内核的各种操作系统没有兼容的程序包管理器,那么您也可能会问为什么Windows和Mac没有兼容的程序包管理器。或任何其他两个操作系统。

不同的操作系统可以满足不同用户的需求,而程序包管理器就是其中的一部分。为什么不是所有Linux发行版都具有相同的窗口管理器?还是附带所有相同的预装软件?

答:不同的人有不同的笔法。


1
“'Linux”不是操作系统”的+1
Silverfire,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.