为什么 Linux 开发人员不能创建一种通用的打包格式?

为什么 Linux 开发人员不能创建一种通用的打包格式?

供应商二进制包格式的选择似乎是由墨菲定律的一种形式决定的:你使用的所有发行版使用已有的软件包。(警告:不存在满足您的软件堆栈的发行版依赖关系的发行版)。

我们还没有看到“一次构建,随处运行”的软件包格式的出现,这是政治问题还是更深层次的问题?

答案1

引用乔尔·斯波尔斯基关于这一点:

(顺便说一句,对于那些关注神秘而又充满政治色彩的博客联合供稿格式的人来说,你可以看到同样的事情在那里发生。RSS 变得支离破碎,有多个不同的版本,规范不准确,政治斗争激烈,而试图通过创建另一种名为 Atom 的格式来清理这一切,结果导致了 RSS 的几个不同版本加上一个 Atom 版本,规范不准确,政治斗争激烈。当你尝试通过创建第三种选择来统一两种对立的力量时,最终只会得到三种对立的力量。你还没有统一任何东西,也没有真正解决任何问题。)

(强调添加)

您 (至少) 拥有两个 Linux 打包系统。这其实是一件好事。单个系统将简单地创建第三个系统。

答案2

造成这种情况的原因有很多,我们需要了解一些历史知识才能正确看待这个问题。

请记住,当我们谈论“Linux”时,我们通常指的是许多不同的Linux 发行版“Linux”其实只是一个操作系统的内核。

Linux 最初的目标是创建一个可以在 PC(最初是 386)上运行的基于 Unix 的系统。第一步是创建内核本身。虽然Linus Torvalds正在研究内核理查德·斯托曼独自工作自由的Unix系统下,GNU(GNU 非 Unix)项目长话短说,两者在某种程度上趋同,因为 GNU 有相关的实用程序(C 编译器/库/构建工具、shell、文本编辑器等)但没有核心来运行它,而 Linux 有核心但没有实用程序在其上运行以使其对大众有用。

这种融合被正式称为 GNU/Linux。你会发现很多发行版仍然称自己为 GNU/Linux 发行版。

由于 GNU/Linux 的自由和开放特性,任何人都可以使用它并根据自己的喜好创建捆绑系统。结果是,人们使用多种配置方法的流来创建这些系统,而这带来的副作用是创建几乎同样多的不同软件包管理系统以适应每个系统。

每个不同的完整系统都有自己的忠实追随者,他们多年来一直坚持使用它们,形成了我们今天所拥有的:一些广泛使用、根深蒂固且稳定的包管理系统,如每分钟转数易于/软件包和 Gentoo 的波蒂奇

有些项目,例如自动包装,它们正在尝试解决这个问题,但是,各种支持的包管理系统的不断发展意味着还有许多移动目标需要关注。

一些软件供应商最终会将他们所需的特定二进制文件和依赖项副本捆绑成一个可在特定系统上运行的大包。

答案3

无论如何,使用相同的软件包格式也无济于事。您无法在其他发行版中使用相同的软件包。您甚至无法在同一发行版的不同版本中使用它。甚至构建软件包也会遇到相同的问题。

要安装软件包,您需要满足在构建软件包期间形成的依赖关系。要构建软件包,您需要满足构建依赖关系。而这些事情是会改变的。为了能够实现更改,更容易的是仅支持您可以修改以在更改后工作的软件包。

如果所有依赖项都相同,那么它就不会是不同的发行版或同一发行版的不同版本。

答案4

只需选择 .deb :-)

相关内容