web-dev-qa-db-ja.com

DESTDIRおよびmakeのPREFIX

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

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

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

104
Sean

./configure --prefix=***

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


make install DESTDIR=***

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

./configure --prefix=/usr

そのため、プログラムは、実行時に/usrにインストールされると想定されます。

make install DESTDIR=debian/tmp

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


make install prefix=***

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

./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にバイナリをインストールします。

162
Alan Curry

これは、DESTDIRおよび--prefixの使用を説明するのに役立ちます( here から):

--prefixおよびDESTDIRを使用した複数インストール:

構成時に-ビルドごとに異なる--prefix location/optionを指定します。例えば:

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
1
sancho.s

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を認識できます。

0
kyb