これを尋ねるのに最適な場所かどうかはわかりません。もっと良い場所があれば、正しい方向に向けてください。
仮に、私が2台のマシンを持っているとしましょう。Aは開発マシンで、Bは本番マシンです。 Aには、ソースからソフトウェアをビルドするために使用できるコンパイラのようなソフトウェアがありますが、Bにはありません。
Aでは、通常のルーチンに従うことで、ソースからソフトウェアを簡単にビルドできます。
./configure
make
次に、sudo make install
を実行して、ビルドしたソフトウェアをAにインストールできます。 。しかし、私が本当にやりたいのは、Bで構築したばかりのソフトウェアをインストールすることです。それを行うための最良の方法は何ですか?
私が検討したいくつかのオプションがあります:
- パッケージマネージャーを使用してBにソフトウェアをインストールする:パッケージマネージャーで利用できるソフトウェアが非常に古くなっているため、これは私にとってオプションではありません。
- Bにコンパイラとその他のビルドツールをインストールする:さまざまな制約があるため、本番マシンにビルドツールをインストールしたくありません。
- バイナリをAからBに手動でコピーします。これはエラーが発生しやすいため、本番マシン全体でバイナリが一貫した方法でインストールされていることを確認したいと思います。
-
make
のみをインストールします Bで、ソースディレクトリを転送し、sudo make install
を実行します B:これは私がこれまでに見つけた最良の解決策ですが、何らかの理由(おそらくクロックオフセット)で、make
ビルドツールがBにインストールされていないため、ビルド済みのはずのソフトウェアを再ビルドしようとしますが、失敗します。私のマシンのI / O速度もひどいため、ソースディレクトリの転送には非常に長い時間がかかります。 。
本当に素晴らしいのは、バイナリと構成ファイルをインストールするために転送および実行できる、ビルドされたバイナリを含むある種のパッケージを作成する方法があった場合です。そのようなツールはありますか?
承認された回答:
これまでに持っていたものを使用し、makefileがGNU autotoolsで生成された場合、ターゲットの場所またはインストールパスを設定します と
./configure --prefix=/somewhere/else/than/the/usual/usr/local
次に実行します
make && make install
最後に、ファイルをプレフィックスフォルダからusr/
にコピーします 他のマシンのフォルダ。これは、両方のマシンが同じアーキテクチャを備えていることを前提としています。そうでない場合は、対応するクロスツールチェーンを使用してください。