alk*_*ary 29 linux rpm dpkg package-management
我想知道理论上是否有可能构建一个既支持 rpm 又支持 debian 包的 Linux 发行版。
是否有任何发行版同时支持两者?
如果不是,它甚至可能吗?
Ste*_*itt 42
我不认为有任何发行版同时支持两者,但事实证明有一个正在开发中,Bedrock Linux(感谢iMalinowski提供的信息)。在其他发行版上,您可以使用转换工具,例如alien
从一种格式转换为另一种格式。只要有足够的时间和精力,任何基于软件的东西都是可行的,因此可以构建这样的发行版(但考虑到.deb
和.rpm
包之间的功能差异,相当困难)。
然而,这一切可能源于支持两种包格式会使生活更简单的想法,因为您可以从任何地方安装包(好吧,任何提供.deb
或 的地方.rpm
)。从哲学上讲,这是有缺陷的。发行版是一组连贯的包;如果你想为那个发行版提供软件,你真的需要专门针对它,包括使用它的包格式(更重要的是,元数据)。原生支持多种包格式是没有意义的。
(在 Debian 世界中,包可以在不是其主要目标的变体上工作,因为包命名法相当一致,并且因为大多数发行版都适合继承树。这在 RPM 世界中并非如此。在这两种情况下,混合和匹配是个坏主意。)
您应该将您的发行版视为构建所需系统的基础,遵守发行版的规则和生态系统,不要混入其他发行版中的东西。您需要更高级别的抽象来支持混合和匹配(或者更确切地说,提供跨分发环境):Steam 运行时、Flatpak 等。
200*_*ess 10
不,这样的怪物不应该被建造。与 MacOS 应用程序包不同,它通常包括应用程序在操作系统上运行所需的一切,RPM 和 .deb 包几乎总是依赖于其他包,例如共享库。Linux 包列出了需要存在的其他包,包管理器有助于强制执行这些要求。此外,Linux 发行版在处理事情的方式上有所不同(例如/etc/network/interfaces.d
与/etc/sysconfig/network-scripts
)。
您甚至不应该在同一包格式系列中混合来自任意存储库的包。也就是说,在 CentOS 机器上安装 SuSE 软件包只是自找麻烦,即使它们都使用 RPM。除非我确切地知道我在做什么,否则我什至不会安装用于同一操作系统的不同版本的软件包(例如,16.04 系统上的 Ubuntu 14.04 软件包)。
因此,尝试在同一系统上同时支持 RPM 和 .deb 是不可能的。在某些绝望的情况下,您可以使用 转换特定的包alien
,但您应该期望投入大量精力来解决此类黑客不可避免地出现的问题。