ソースからビルドされたバイナリを 2 台目のマシンにインストールできますか?

ソースからビルドされたバイナリを 2 台目のマシンにインストールできますか?

これが質問するのに最適な場所かどうかわかりません。もっと良い場所があれば、教えてください。

仮に、2 台のマシンがあるとします。A は開発マシンで、B は本番マシンです。A には、ソースからソフトウェアをビルドするために使用できるコンパイラなどのソフトウェアがありますが、B にはそれがありません。

A では、通常の手順に従ってソースからソフトウェアを簡単にビルドできます。

./configure
make

次に、 を実行して、ビルドしたソフトウェアを A にインストールできますsudo make install。ただし、実際に実行したいのは、ビルドしたソフトウェアを B にインストールすることです。そのための最善の方法は何ですか?

私が検討した選択肢はいくつかあります:

  1. パッケージ マネージャーを使用して B にソフトウェアをインストールする: パッケージ マネージャーで利用できるソフトウェアは非常に古いため、これは私にとっては選択肢ではありません。
  2. B にコンパイラとその他のビルド ツールをインストールします。さまざまな制約があるため、本番マシンにビルド ツールをインストールしたくありません。
  3. バイナリを A から B に手動でコピーします。これはエラーが発生しやすいため、バイナリが運用マシン間で一貫した方法でインストールされるようにする必要があります。
  4. B にのみインストールしmake、ソース ディレクトリを転送して、sudo make installB で実行する: これは、これまで見つけた最善の解決策ですが、何らかの理由 (おそらくクロック オフセット) により、makeすでにビルドされているはずのソフトウェアを再構築しようとしますが、ビルド ツールが B にインストールされていないため失敗します。また、私のマシンの I/O 速度が非常に遅いため、ソース ディレクトリの転送に非常に長い時間がかかります。

本当に便利なのは、ビルドされたバイナリを含む何らかのパッケージを作成し、それを転送して実行し、バイナリと構成ファイルをインストールできる方法です。そのようなツールは存在しますか?

答え1

これまでのものを使用して、makefileがGNU autotoolsで生成された場合は、ターゲットの場所またはインストールパス

./configure --prefix=/somewhere/else/than/the/usual/usr/local

そして実行する

make && make install

最後に、プレフィックス フォルダーから他のマシンのフォルダーにファイルをコピーしますusr/。これは、両方のマシンが同じアーキテクチャを持っていることを前提としています。そうでない場合は、対応するクロス ツールチェーンを使用します。

答え2

最もクリーンな方法は、OS がアプリケーションのパッケージを作成するために使用するパッケージング ツールを使用して、他のパッケージと同様にインストールすることです。その方法はパッケージ マネージャーとシステムによって異なり、ある程度の学習が必要です。

/opt/packagenameソース パッケージがサブツリー (またはなど)内でのソフトウェアのインストールをサポートしている場合、手動インストールがいくらか簡単になります/usr/local/packagename。 1 台のマシンでコンパイルしてインストールし、そのサブツリーだけを別のマシンの同じ場所にコピーします。 ディレクトリには、関連するファイルだけがすべて含まれている必要があります。

に変更が必要な場合は/etc、手動で行う必要があります。また、実際にバイナリにアクセスするには、パス内のディレクトリにシンボリックリンクするか、パッケージディレクトリをパスに追加する必要があります。/をbin使用するほとんどのパッケージでは、スクリプトに引数を指定してインストールパスを設定できます。autoconfautomake--prefix./configure

いずれにしても、コンパイルしたアプリケーションに必要なライブラリなどを調べ、両方のマシンに互換性のあるバージョンがあることを確認する必要があります。

関連情報