回答:
Linuxディストリビューション用にコンパイルされた実行可能ファイルは、他のディストリビューションに必要な共有ライブラリがある場合、そのディストリビューションで動作します。CentOSにはかなり古いライブラリバージョンがあるため、Ubuntuのバージョンは最新ではない可能性があります。しかし、Ubuntuは唯一持っていることが多い場合libfoo5
やlibfoo6
、あなたが必要とするlibfoo3
以前のUbuntuのリリースからそれをつかむことができます。
CentOSとUbuntuは異なるパッケージシステムを使用しています:rpmとdeb。でrpmをdebに変換できalien
ます。結果のパッケージは、必要な依存関係があるかどうかに応じて、インストールできる場合とできない場合があります。rpmをプレーンアーカイブ(再度alien
)に変換し、/opt
またはの下の別のディレクトリに解凍する方が簡単な場合があります/usr/local
。
プログラムに依存関係のリストが付属していない場合は、実行ldd /path/to/binary
して必要なライブラリを確認できます。libfoo.so.4 => not found
何かが欠けているかのような出力が表示されます。
alien
コマンドラインプログラムです。周りにGUIがあるかどうかはわかりません。コマンドラインに慣れていない場合は、Ubuntuのバイナリパッケージを入手することをお勧めします。
CentOSのは「100%のバイナリ互換性」であるその商業的対応と、RedHatのエンタープライズLinuxの。RHELは、サポート契約やさまざまな企業向けのものが含まれるライセンスシステムであるため、誰もが実行したいとは限りません。ただし、オープンソースの世界ではすべての開発を共有する必要があるため、サポート契約やメディアなどの費用を負担しながら、ソースを共有する必要があります。CentOSは、無料でコミュニティに提供するための再パッケージ化です。
さらに、「100%の互換性」は、RHELとCentOSの同等のバージョン間のみです。ライブラリのバージョンはメジャーリリースごとに異なりますが、これらのプロジェクトは同期してリリースされるため、同じメジャーバージョンに対してセットアップされている限り、それらの間でパッケージを交換できます。
ディストリビューション、特にCentOSのようなRPMベースのディストリビューションとUbuntuのようなDebian ベースのディストリビューションの違いは多岐にわたる可能性があり、特定のパッケージはそれらの間で移植できません。ただし、システム全体はほぼ同じです。一方用に開発されたソフトウェアは、通常、もう一方用に簡単にコンパイルできます。コンパイルとパッケージ化が少し異なるだけです。正しいライブラリバージョンをすべて取得したい場合は、1つのバイナリが実際に別のライブラリで動作します。Gillesの回答を参照してください。