Numer 1 określa, gdzie pakiet trafi po zainstalowaniu i gdzie będzie szukał powiązanych z nim plików, gdy zostanie uruchomiony. To jest to, czego powinieneś użyć, jeśli kompilujesz coś do użytku na jednym hoście.
make install DESTDIR=***
Numer 2 dotyczy instalacji w katalogu tymczasowym, z którego nie będzie uruchamiany pakiet. Na przykład jest to używane podczas budowania debpakietów. Osoba budująca pakiet w rzeczywistości nie instaluje wszystkiego w swoim ostatecznym miejscu we własnym systemie. Może mieć już zainstalowaną inną wersję i nie chce jej przeszkadzać lub może nawet nie być rootem. Więc używa
./configure --prefix=/usr
więc program będzie oczekiwał, że zostanie zainstalowany w programie /usrpo uruchomieniu
make install DESTDIR=debian/tmp
aby faktycznie stworzyć strukturę katalogów.
make install prefix=***
Numer 3 zainstaluje go w innym miejscu, ale nie utworzy wszystkich katalogów DESTDIR=/foo/bar/baz. Jest powszechnie używany z GNU stow via
./configure --prefix=/usr/local&& make && sudo make install prefix=/usr/local/stow/foo
, który zainstalowałby pliki binarne w /usr/local/stow/foo/bin. W stosunku,
make install DESTDIR=/usr/local/stow/foo
zainstalowałby pliki binarne w /usr/local/stow/foo/usr/local/bin.
Co jest warte, w kompilacji opartej na cmake możesz emulować "przypadek 4" (do przechowywania itp.), Uruchamiając cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmakew katalogu kompilacji.
Ryan Pavlik
@JackKelly: Dzięki! Używałem DESTDIR z GNU stow i musiałem naprawić strukturę katalogów z mv usr/local/* . && rmdir usr/local && rmdir usrtypowym - użycie prefix=jest znacznie lepsze!
thinkski
Uwaga: niektóre programy nie obsługują DESTDIR=/tmp/foo make install; w przypadku projektów opartych na cmake miałem więcej szczęścia z cmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmakeinstalacjami /tmp/foo/{bin,...}; na przykład patrz github.com/opencv/opencv/issues/11833#issuecomment-401164056 .
timotheecour
Jeszcze jedna uwaga: DESTDIRi prefixmogą być używane make installrazem, tj make install DESTDIR=/foo/bar/tmp perfix=/local.
Albert
1
Może to pomóc w zilustrowaniu użycia DESTDIRi --prefix( stąd ):
Wiele instalacji przy użyciu --prefix i DESTDIR:
Oddziel inną lokalizację / opcję --prefix dla każdej kompilacji - w czasie konfiguracji. Na przykład:
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
W przypadku, gdy plik ./configure nie jest dostarczony, można nadal zainstalować w katalogu użytkownika za pomocą: make prefix = / path / to / your / lib / libaio install
Good Will
0
Z openssl/INSTALL
Twórcy pakietów, którzy chcą skonfigurować bibliotekę dla standardowych lokalizacji, ale mają pakiet zainstalowany w innym miejscu, aby można go było łatwo spakować, mogą użyć
$ make INSTALL_PREFIX=/tmp/package-root install
(lub określ „--install_prefix = / tmp / package-root” jako opcję konfiguracji). Określony przedrostek zostanie dodany do wszystkich nazw plików docelowych instalacji.
Jest to niestandardowe, ale INSTALL_PREFIX jest używany w niektórych innych programach.
Działa to dla wersji OpenSSL starszych niż 1.1.x. OpenSSL 1.1.xi nowsze wersje potrafią rozpoznać zwykłe pliki DESTDIR.
cmake -DCMAKE_INSTALL_PREFIX=/foo/bar/baz -P cmake_install.cmake
w katalogu kompilacji.mv usr/local/* . && rmdir usr/local && rmdir usr
typowym - użycieprefix=
jest znacznie lepsze!DESTDIR=/tmp/foo make install
; w przypadku projektów opartych na cmake miałem więcej szczęścia zcmake -DCMAKE_INSTALL_PREFIX=/tmp/test1 -P cmake_install.cmake
instalacjami/tmp/foo/{bin,...}
; na przykład patrz github.com/opencv/opencv/issues/11833#issuecomment-401164056 .DESTDIR
iprefix
mogą być używanemake install
razem, tjmake install DESTDIR=/foo/bar/tmp perfix=/local
.Może to pomóc w zilustrowaniu użycia
DESTDIR
i--prefix
( stąd ):źródło
Z
openssl/INSTALL
Jest to niestandardowe, ale INSTALL_PREFIX jest używany w niektórych innych programach.
Działa to dla wersji OpenSSL starszych niż 1.1.x. OpenSSL 1.1.xi nowsze wersje potrafią rozpoznać zwykłe pliki
DESTDIR
.źródło