makeのDESTDIRおよびPREFIX


118

ソフトウェアを特定のディレクトリにインストールしようとしています。私はいくつかの方法を見つけましたが、それらの違いは何かわかりません。

  1. ./configure --prefix=***
  2. make install DESTDIR=***
  3. make install prefix=***

私はこれら3つの機能について混乱しています。彼らは同じ目標を達成していますか?

回答:


184

./configure --prefix=***

番号1は、パッケージがインストールされるときの移動先、および実行時に関連ファイルを探す場所を決定します。単一のホストで使用するために何かをコンパイルしているだけの場合に使用します。


make install DESTDIR=***

番号2は、パッケージの実行元ではない一時ディレクトリにインストールするためのものです。たとえば、これはdebパッケージをビルドするときに使用されます。パッケージをビルドする人は、実際にはすべてを自分のシステムの最終的な場所にインストールするわけではありません。彼はすでに別のバージョンをインストールしていて、邪魔したくないかもしれませんし、rootでさえないかもしれません。だから彼は

./configure --prefix=/usr

したがって、プログラムは/usr実行時にインストールされることを期待します。

make install DESTDIR=debian/tmp

実際にディレクトリ構造を作成します。


make install prefix=***

3番は別の場所にインストールしますが、すべてのディレクトリを作成するわけではありませんDESTDIR=/foo/bar/baz。GNU stowで一般的に使用されます。

./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo

、バイナリをにインストールし/usr/local/stow/foo/binます。比較すると、

make install DESTDIR=/usr/local/stow/foo

バイナリをにインストールし/usr/local/stow/foo/usr/local/binます。


8
価値があることについては、cmakeベースのビルドcmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmakeでは、ビルドディレクトリで実行することにより、(stowなどの)「ケース4」をエミュレートできます。
Ryan Pavlik 2012

@JackKelly:ありがとう!私はGNU stowでDESTDIRを使用しており、mv usr/local/* . && rmdir usr/local && rmdir usr通常はディレクトリ構造を修正する必要がありました-使用するprefix=方がはるかに優れています!
thinkski 2014

注:一部のソフトウェアはをサポートしていませんDESTDIR=/tmp/foo make install。cmakeベースのプロジェクトの場合、私はcmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmakeにインストールできる運が良かった /tmp/foo/{bin,...}です。例については、github.com / opencv / opencv / issues / 11833issuecomment-401164056を参照してください。
timotheecour

もう1つの注意:DESTDIRと一緒にprefix使用できます。make installmake install DESTDIR=/foo/bar/tmp perfix=/local
albert

1

これはDESTDIR--prefixここから)の使用を説明するのに役立ちます:

--prefixとDESTDIRを使用した複数のインストール:

構成時に、ビルドごとに異なる--prefixの場所/オプションを指定します。たとえば:

untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-mpich --with-mpi-dir=/opt/mpich
make
make install DESTDIR=/tmp/petsc-pkg
untar petsc tar ball
./configure --prefix=/opt/petsc/petsc-3.9.0-openmpi --with-mpi-dir=/opt/openmpi
make
make install DESTDIR=/tmp/petsc-pkg

./configureファイルが提供されていない場合でも、次を使用してユーザー固有のディレクトリにインストールできます。make prefix = / path / to / your / lib / libaio install
Good Will

0

から openssl/INSTALL

標準の場所のライブラリを構成したいが、簡単にパッケージできるようにパッケージを別の場所にインストールして、使用できるパッケージビルダー

$ make INSTALL_PREFIX=/tmp/package-root install

(または、設定オプションとして「--install_prefix = / tmp / package-root」を指定します)。指定されたプレフィックスは、すべてのインストールターゲットファイル名の先頭に追加されます。

これは非標準ですが、INSTALL_PREFIXは他のいくつかのプログラムで使用されています。

これは、1.1.xより前のOpenSSLバージョンで機能します。OpenSSL 1.1.x以降では、通常の認識が可能DESTDIRです。

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