Closed. This question is off-topic。它当前不接受答案。












想改善这个问题吗? Update the question,所以它是用于堆栈溢出的on-topic

已关闭8年。



Improve this question




使用多个程序包管理器存在陷阱吗?我可以同时使用Redhat的yum和Debian的能力吗?

我遇到了this article和此信息图-

我倾向于选择Debian,但是快速安装VM显示该内核在稳定版本中尚未升级到3.2。因此,我计划迁移到Archlinux,但是该信息图表认为该软件包的可用性很低,我想知道是否可以从Fedora或Ubuntu存储库中安装.deb或.rpm文件。

最佳答案

简短的答案是,是的,您可以,但实际上不应该。

以下是交叉分发安装时要考虑的事项列表(无特定顺序):

  • 依赖关系 hell

  • 首先出现诸如yum/apt/yast之类的东西的主要原因是要避免所谓的dependency hell。通过使用来自其他系统的软件包,您将无法干净安装就放弃了已放入软件包中的工作。

    二级软件包管理器将要满足其自身的依赖性,并安装一堆已经安装的东西。这意味着您必须一次安装一个软件包,以免覆盖主软件包管理器中已经安装的软件包,并且会遇到各种问题。
  • 他们使用相同的软件包管理器吗?

  • 如果这样做,您甚至可以直接安装它,但是您可能会遇到依赖性问题或程序包冲突。如果没有,则可以使用各种工具提取软件包,然后将二进制文件放到文件系统上(看看Alien或this post about extracting .rpm and .deb files)。

    这将为您提供系统上的文件,但不能保证它会立即可用。可能(通常是)需要一些附加的手动搜索。
  • 基本软件包(例如glibc)的版本是否相同或非常接近?

  • 如果是这样,则出现问题的机会就更少。这两个发行版的基本软件包之间的差异越大,您就越有可能丢失正在运行的发行版中不可用的共享库,因为版本不同并且文件名与二进制文件不匹配寻找。

    从技术上讲,您还可以从其他发行版中提取基本依赖项,并将它们放在文件系统中,但是,如果您需要从源代码进行编译,那肯定会让您感到痛苦。想象一下gcc会是多么困惑。
  • 您要安装的软件包是否调用特定的内核模块?

  • 我能清楚地说明这一点的最好方法是我最近从网络主机购买VM时遇到的一个常见问题。您获得了自己的xen或virtuozzo内核品牌,而iptables不能完全正常工作,因为netfilter位于内核中并且ABI已更改。使它重新工作可能非常令人头疼,并且此问题不仅限于iptables。我最好的建议是在自己的基本存储库中选择具有所需内核的发行版。
  • 从源
  • 编译

    毫无疑问,如果您非常想从其他系统获取软件包,就必须这样做。由于各种发行版以不同的方式设置其构建环境,因此您将花费一半的时间来解决路径和其他配置问题。

    07-28 12:39