使用多个包管理器是否存在陷阱?我可以同时使用 Redhat 的 yum 和 Debian 的 aptitude 吗?
我看到了这篇文章和这张信息图——
我倾向于选择 Debian,但快速的 VM 安装表明内核尚未在稳定的 repo 中升级到 3.2。所以我打算迁移到 Archlinux,但信息图表认为它的软件包可用性很低,我想知道我是否可以从 Fedora 或 Ubuntu 存储库安装 .deb 或 .rpm 文件。
简短的回答是,是的,你可以,但你真的不应该。
以下是交叉分发安装时要考虑的事项列表(无特定顺序):
yum/apt/yast 之类的东西首先存在的主要原因是为了避免所谓的依赖地狱。通过使用来自其他系统的软件包,您将放弃已在软件包中进行的干净安装工作。
辅助包管理器将希望满足其自身的依赖关系,并安装一堆已经安装的东西。这意味着您必须一次安装一个包,这样您就不会从主包管理器中覆盖已安装的包,并遇到各种问题。
如果他们这样做,您甚至可以直接安装它,但您可能会遇到依赖问题或包冲突。如果他们不这样做,您可以使用各种工具提取软件包,然后将二进制文件放到文件系统上(看看外星人,或者这篇关于提取 .rpm 和 .deb 文件的帖子)。
这将为您提供系统上的文件,但不能保证它会开箱即用。可能(并且通常)需要一些额外的手动搜索。
如果是这样,出现问题的可能性就较小。两个发行版的基础包之间的差异越大,您就越有可能缺少正在运行的发行版中不可用的共享库,因为版本不同并且文件名与二进制文件不匹配寻找。
从技术上讲,您还可以从其他发行版中提取基本依赖项并将它们也放在文件系统上,但是如果您需要从源代码编译东西,那肯定会给您带来痛苦。想象一下 gcc 会有多混乱。
我能清楚地表达这一点的最佳方式是我最近从网络主机购买虚拟机时看到的一个常见问题;您获得了他们自己品牌的 xen 或 virtuozzo 内核,而 iptables 无法完全正常工作,因为 netfilter 在内核中并且 ABI 已更改。让它再次工作可能非常令人头疼,而且这个问题不仅限于 iptables。我最好的建议是选择在其自己的基础存储库中具有所需内核的发行版。
毫无疑问,如果您非常想从其他系统获取软件包,您将不得不这样做。由于各种发行版设置它们的构建环境不同,您将花费一半的时间来解决路径和其他配置问题。