Ответы:
./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 через
./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
.
mv usr/local/* . && rmdir usr/local && rmdir usr
использования prefix=
- намного лучше!
DESTDIR=/tmp/foo make install
; для проектов на основе cmake мне больше повезло с cmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmake
установкой /tmp/foo/{bin,...}
; см. пример на github.com/opencv/opencv/issues/11833#issuecomment-401164056 .
DESTDIR
и prefix
может быть использовано на make install
вместе, то есть make install DESTDIR=/foo/bar/tmp perfix=/local
.
Это может помочь проиллюстрировать использование 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
Из openssl/INSTALL
Создатели пакетов, которые хотят настроить библиотеку для стандартных расположений, но установили пакет в другом месте, чтобы его можно было легко упаковать, могут использовать
$ make INSTALL_PREFIX=/tmp/package-root install
(или укажите "--install_prefix = / tmp / package-root" в качестве параметра конфигурации). Указанный префикс будет добавлен ко всем именам файлов цели установки.
Это нестандартно, но INSTALL_PREFIX используется в некоторых других программах.
Это работает для версий OpenSSL до 1.1.x. OpenSSL 1.1.x и выше умеют распознавать обычные DESTDIR
.
cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmake
в каталоге сборки.