web-dev-qa-db-ja.com

UbuntuとCentOS、およびバイナリ互換性

CentOS 4.7で構築されたソフトウェアをインストールしようとしています。それがUbuntuでも動作するかどうか知っていますか? CentOSは100%バイナリ互換です。 Ubuntuの最新バージョンでも同じですか?

9

Linux Standard Base(LSB)バイナリは、LSBをサポートするディストリビューション間で互換性があると想定されています。 CentOSはLSBをサポートしています。 LSBサポートはUbuntuでも利用できますが、関連するLSBパッケージがデフォルトでインストールされているかどうかはわかりません。アプリケーションがバイナリ互換の場合、 テスト が可能です。

LSBは、標準自体と、それがどの程度の影響を与えたかの両方について、物議を醸しています。

3
Alexander

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は「100%バイナリ互換」であり、その商用版と対応しています RedHat Enterprise Linux[〜#〜] rhel [〜#〜]は、サポート契約やさまざまなエンタープライズ機能を含むライセンスシステムであるため、誰もが実行したいとは限りません。ただし、オープンソースの世界ではすべての開発を共有する必要があるため、サポート契約やメディアなどの費用を負担しながら、ソースを共有する必要があります。 CentOSは、無料でコミュニティに提供するための再パッケージ化です。

さらに、「100%の互換性」はと同等のバージョン[〜#〜] rhel [〜#〜 ]およびCentOS。ライブラリのバージョンはメジャーリリースごとに変化しますが、これらのプロジェクトは同期してリリースされるため、両方が同じメジャーバージョンに設定されている限り、それらの間でパッケージを交換できます。

ディストリビューション、特にCentOSのようなRPMベースのディストリビューションとUbuntuのようなDebianベースのディストリビューションの違いは多岐にわたる可能性があり、特定のパッケージはそれらの間でポータブルではありません。ただし、システム全体はほぼ同じです。一方用に開発されたソフトウェアは、通常、もう一方用に簡単にコンパイルできます。コンパイルとパッケージ化が少し異なるだけです。正しいライブラリバージョンをすべて取得したい場合は、1つのバイナリが実際に別のライブラリで動作します。 Gillesの回答を参照

12
Caleb

CentOSは長期的に安定しているため、新しいシステムでコンパイルされたバイナリがリンクしない古いライブラリがあります。 CentOSはrpmパッケージマネージャーを使用し、UbuntuはDebian aptを使用します。そのため、パッケージには互換性さえありません。

一般に、CentOSでそれを必要とし、それがまだない場合は、別のCentOSマシンでソースからRPMをビルドする必要があります。

0
Keith