Ubuntu 与 CentOS 以及二进制兼容性

Ubuntu 与 CentOS 以及二进制兼容性

我正在尝试安装基于 CentOS 4.7 构建的软件。你知道它是否也能在 Ubuntu 上运行吗?我读到 CentOS 是 100% 二进制兼容的。最新版本的 Ubuntu 也是这样吗?

答案1

如果另一个发行版具有所需的共享库,则为 Linux 发行版编译的可执行文件也可以在另一个发行版上运行。 CentOS 的库版本相当旧,因此 Ubuntu 的版本可能太新;但通常情况下,如果 Ubuntu 只有libfoo5并且libfoo6您需要,libfoo3您可以从早期的 Ubuntu 版本中获取它。

CentOS 和 Ubuntu 使用不同的打包系统:rpm 与 deb。您可以使用 .rpm 将 rpm 转换为 deb alien。生成的包可能可以安装,也可能无法安装,具体取决于您是否具有所需的依赖项。将 rpm 转换为普通存档(再次使用)并将其解压到或alien下的单独目录中可能会更容易。/opt/usr/local

如果程序没有附带依赖项列表,您可以运行ldd /path/to/binary以查看它需要哪些库。您会看到类似libfoo.so.4 => not found缺少某些内容的输出。

答案2

中央操作系统是“100% 二进制兼容”与其商业对应物,红帽企业Linux。因为RHEL是一个许可系统,包括支持合同和各种企业事物,并不是每个人都想运行它。然而,在开源世界中,所有开发都必须共享,因此,尽管他们收取支持合同、媒体等费用,但他们仍然必须共享源代码。中央操作系统是对其进行重新包装,免费提供给社区。

此外,“100%兼容性”仅存在于等效版本RHEL中央操作系统。库版本随着每个主要版本的变化而变化,但由于这些项目同步发布,只要它们都设置为相同的主要版本,您就可以在它们之间交换包。

发行版之间的差异,特别是基于 RPM 的发行版,例如中央操作系统以及基于 Debian 的系统,例如乌班图可能会很多,并且给定的包将无法在它们之间移植。然而,整体系统大致相同,为一个系统开发的软件通常可以轻松地为另一个系统编译,只是编译和打包的方式略有不同。如果您愿意引入所有正确的库版本,那么一个版本的二进制文件实际上可以在另一个版本上运行。参见吉尔斯的回答

答案3

Linux Standard Base (LSB) 二进制文件应该在支持 LSB 的发行版之间兼容。 CentOS 有 LSB 支持。 Ubuntu 中也提供了 LSB 支持,但我不知道是否默认安装了相关的 LSB 软件包。有可能测试如果应用程序是二进制兼容的。

请注意,LSB 是有争议的,无论是标准本身还是它是否产生/有多大影响。

答案4

CentOS 是长期稳定的,因此它具有较旧的库,而在较新的系统上编译的二进制文件将无法链接。 CentOS使用rpm包管理器,Ubuntu使用Debian apt。所以这些包甚至不兼容。

一般来说,如果你想在 CentOS 上使用它,但它还没有,你就必须在另一台 CentOS 机器上从源代码构建一个 RPM。

相关内容