Ubuntu 与 CentOS 和二进制兼容性

Con*_*zen 10 ubuntu centos binary

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

Gil*_*il' 16

如果其他发行版具有所需的共享库,则为 Linux 发行版编译的可执行文件将适用于另一个发行版。CentOS 有很旧的库版本,所以 Ubuntu 的版本可能太新了;但往往当Ubuntu的只有libfoo5libfoo6你需要libfoo3,你可以从较早版本的Ubuntu抓住它。

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

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


Cal*_*leb 12

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

此外,然后“100%兼容性”只是之间等效版本RHELCentOS的。库版本随每个主要版本而变化,但由于这些项目是同步发布的,您可以在它们之间交换包,只要它们都设置为相同的主要版本。

发行版之间的差异,尤其是基于 RPM 的发行版(如CentOS)和基于 Debian的发行版(如Ubuntu)之间的差异可能很大,并且给定的软件包在它们之间无法移植。然而,整个系统大致相同,为一个开发的软件通常可以很容易地为另一个编译,只需稍微不同地编译和打包即可。如果您想引入所有正确的库版本,则其中一个的二进制文件实际上可以在另一个版本上运行。见吉尔斯的回答


Ale*_*der 3

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

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