インストールを行いますが、デフォルトのディレクトリには行いませんか?


148

「make install」を実行して必要なものはすべて用意したいのですが、システムの/ usr / binなどではなく、独自のフォルダにインストールしたいのですが可能ですか。/ usr / binなどにあるツールを参照していても?


3
すでにプロジェクトをビルドしていて、プレフィックスなしで./configureを実行し、カスタムパスにインストールする場合は、stackoverflow.com
a / 17679654/313113

回答:


212

パッケージにより異なります。MakefileがGNU autotools(./configure)によって生成される場合、通常は次のようにターゲットの場所を設定できます。

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

Makefileがautotoolsによって生成されず、ソフトウェアとともに配布される場合は、単にエディターで開いて変更します。インストール先のディレクトリは、おそらく変数のどこかで定義されています。


9
make && make installconfigure句に従わないでください。
nass

1
私が抱えている問題--prefixstrings、結果のバイナリに対して後でを実行すると、パスが内部に格納されていることがわかります。なぜこれが発生するのかはわかりませんが、他のユーザーに出荷するバイナリのマシンパスは絶対に必要ありません。
Erik Aigner

エリック、ソースからビルドした場合、とにかくmakeを実行するパスへの参照があるようです。
コンスタンティンリバコフ

44

automakeのバージョンがわからないので、DESTDIR環境変数を使用できます。
確認するにはMakefileを参照してください。

例えば:

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install

9
これは、-prefixコマンドライン引数なしでconfigureを実行し、すでにプロジェクトをビルドしたが、デフォルトの場所にインストールしたくないが、代わりにカスタムインストールパスを指定した場合に機能します。これにより、デフォルトのusr / local / bin /パスがDESTDIRに追加され、プロジェクトは$ HOME / Software / LocalInstall / usr / local / bin /にインストールされます
bitek

これは素晴らしいソリューションです。これが選ばれた答えではない理由がわかりません!他のほとんどすべての回答は再構成を要求します。つまり、再構成する必要もあります。コンパイルしたファイルを別の場所にインストールしたいという理由だけで、MITKスーパービルド全体を2〜3時間後にコンパイルし、やり直すように求められたとします。これは、この状況を回避するための素晴らしい回避策です。
ダックドジャース

23
make DESTDIR=./new/customized/path install

このクイックコマンドは、Ubuntu 16へのopencvリリース3.2.0のインストールで私に役立ちました。

このようなリダイレクトは、DESTDIRロケーションがユーザーに適切なアクセス権を持っている限り、ユーザーに管理者権限がない場合にも役立ちます。例/ home //


1
メイクファイル内にデフォルト値がある場合、PREFIXもオーバーライドする必要があるかもしれません
Mark Ch

17

コンパイルしようとしているモジュールがサポートしているものに依存している可能性があります。makefileがautotoolsを使用して生成されている場合は、次を使用します。

--prefix=<myinstalldir>

./configureを実行するとき

一部のパッケージでは、実行時にオーバーライドすることもできます。

make prefix=<myinstalldir>

ただし、。/ configureを使用していない場合、確実に知る唯一の方法は、メイクファイルを開いて確認することです。一番上にある最初のいくつかの変数の1つでなければなりません。


3
あなたもそれを認識する必要がありmake prefix=...、これらは通常、後に変更することができないので、間違ったハードコーディングされたパスを持つバイナリをもたらすことができる./configure --prefix=...
トビアスKienzler


0

上記の解決策を試しました。どれもうまくいきませんでした。

最後に、Makefileファイルを開き、プレフィックスパスを以下のように目的のインストールパスに手動で変更しました。

PREFIX ?= "installation path"

--prefixを試したところ、「make」はそのようなコマンド入力がないと不平を言いました。しかし、おそらくいくつかのパッケージは--prefixを受け入れますが、これはもちろんよりクリーンなソリューションです。


1
--prefixオプションがあるに./configureBEFOREを呼んでいますmake
ガス

-7

INSTALL_ROOTを使用してみてください。

make install INSTALL_ROOT=$INSTALL_DIRECTORY

11
裏付けとなる情報なしに人々が何かを「試す」ことを提案しないでください。
RichieHH 2016年

これはコメントであるべきです。
EJoshuaS-
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.