当前位置: 首页>>技术教程>>正文


Ubuntu vs. CentOS与二进制兼容性

, ,

问题描述

我正在尝试安装基于CentOS 4.7的软件。您知道它是否还将在Ubuntu中运行吗?我读到CentOS是100%二进制兼容的。最新版本的Ubuntu是否也是如此?

最佳思路

Linux标准库(LSB)二进制文件应该在支持LSB的发行版之间兼容。 CentOS具有LSB支持。 Ubuntu也提供LSB支持,但是我不知道默认情况下是否安装了相关的LSB-packages。如果应用程序是二进制兼容的,则可以使用test

请注意,LSB既有标准本身,也有影响力/影响力,这是有争议的。

次佳思路

如果Linux发行版中编译的可执行文件具有必需的共享库,则该文件可以在其他发行版上工作。 CentOS的库版本相当老,因此Ubuntu的版本可能太新了。但是通常,如果Ubuntu仅具有libfoo5libfoo6,并且您需要libfoo3,则可以从早期的Ubuntu版本中获取它。

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

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

第三种思路

CentOS与商业版本RedHat Enterprise Linux是“ 100%二进制兼容的”。由于RHEL是包含许可合同和各种企业事务的许可系统,因此并非所有人都希望运行它。但是,在开源世界中,所有开发都必须共享,因此,尽管他们为支持合同,媒体等收取费用,但仍然必须共享源。 CentOS是re-packaging的一部分,它免费提供给社区。

再者,仅在等效版本​​的RHEL和CentOS之间存在“ 100%兼容性”。库版本随每个主要版本而变化,但是由于这些项目是同步发布的,因此您可以在它们之间交换包,只要它们都为同一主要版本设置即可。

发行版之间的差异,尤其是基于RPM的发行版(如CentOS)和基于Debian的发行版(如Ubuntu)之间的差异可能很大,而且给定的软件包将无法在它们之间移植。但是,总体系统大致相同,为一个平台开发的软件通常可以轻松为另一个平台编译,而只是在编译和打包方面有所不同。如果您希望引入所有正确的库版本,则一个库中的二进制文件实际上将在另一库中工作。 See Gilles’s answer

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9051.html,未经允许,请勿转载。