供应商二进制包格式选择似乎由墨菲定律的一种形式决定:您不使用的所有发行版都有包。(警告:不存在满足您的软件堆栈的分发依赖性的分发)。
这是政治问题,还是更深层次的问题,我们还没有看到“一次构建,随处运行”包格式的出现?
cle*_*tus 24
在这一点上引用乔尔·斯波尔斯基的话似乎很合适:
(顺便说一句,对于那些追随神秘但充满政治色彩的博客联合提要格式世界的人来说,你会看到同样的事情发生在那里。RSS 变得支离破碎,有几个不同的版本、不准确的规范和大量的政治斗争,尝试通过创建另一种称为 Atom 的格式来清理所有内容,这导致了多个不同版本的 RSS 和一个版本的 Atom、不准确的规范和大量政治斗争。当您尝试通过创建第三种替代方案来统一两种对立的力量时,你只是最终形成了三个对立的力量。你没有统一任何东西,也没有真正解决任何问题。)
(强调)
你(至少)有两个 Linux 打包系统。这其实是一件好事。单个系统将简单地创建第三个系统。
Way*_*rts 20
造成这种情况的原因有很多,一点历史是为了正确看待事情。
请记住,当我们谈论“Linux”时,我们通常指的是许多不同的Linux 发行版之一。“Linux”实际上只是一个操作系统内核。
Linux 的最初目标是创建一个可以在 PC(最初是 386)上运行的基于 Unix 的系统。第一步是创建内核本身。当Linus Torvalds在内核上工作时,Richard Stallman正在他自己的Free Unix 系统上工作,在GNU (GNU's Not Unix) 项目下。长话短说,两者有些融合,因为 GNU 有相关的实用程序(C 编译器/库/构建工具、shell、文本编辑器等)但没有运行它的核心,而 Linux 有核心但没有实用程序在它之上运行,使其对大众有用。
这种融合在某种程度上被正式称为 GNU/Linux。您会看到许多发行版仍然称自己为 GNU/Linux 发行版。
由于 GNU/Linux 的自由和开放特性,任何人都可以选择它并根据自己的特定喜好创建捆绑系统。结果是使用不同配置方法的许多不同流来创建这些系统,这产生了创建几乎相同数量的不同包管理系统以适应每个系统的副作用。
每个不同的完整系统都有自己强大的追随者,多年来一直坚持使用它们,导致我们今天拥有:少数广泛使用、根深蒂固且稳定的包管理系统,如RPM、APT / dpkg和 Gentoo 的Portage。
有一些项目,例如Autopackage试图解决这个问题,但是各种支持的包管理系统的不断发展意味着有许多移动的目标可以遵循。
一些软件供应商最终做的是将他们需要的特定二进制文件和依赖项的副本捆绑到一个可以在特定系统上运行的大包中。
无论如何,拥有相同的包格式也无济于事。您不能在其他发行版中使用相同的包。您甚至不能经常在同一发行版的不同版本中使用它。甚至构建包也可能有同样的问题。
要安装包,您需要满足在构建包期间形成的依赖项。要构建包,您需要满足构建依赖项。而这些事情会发生变化。为了能够实现更改,更容易仅支持您可以在更改后修改的包。
如果所有依赖项都相同,则不会是不同的发行版或同一发行版的不同版本。
我认为有一点“不是在这里发明的综合症”。Debian 的打包系统早于 RedHat,但它在许多方面都更胜一筹,但您永远不会看到 RedHat 切换。相反,您会看到很多人使用“apt-rpm”,试图为您提供 apt 与 rpm 文件的一些优点。