Ich versuche, Software in einem bestimmten Verzeichnis installieren zu lassen. Ich habe mehrere Möglichkeiten gefunden, bin mir aber nicht sicher, was die Unterschiede zwischen ihnen sind.
./configure --prefix=***
make install DESTDIR=***
make install prefix=***
Ich bin verwirrt über die Funktionen dieser drei. Erreichen sie dasselbe Ziel?
./configure --prefix=***
Nummer 1 legt fest, wohin das Paket bei der Installation verschoben wird und wo es nach den zugehörigen Dateien sucht, wenn es ausgeführt wird. Es ist das, was Sie verwenden sollten, wenn Sie nur etwas für die Verwendung auf einem einzelnen Host kompilieren.
make install DESTDIR=***
Nummer 2 dient der Installation in einem temporären Verzeichnis, von dem aus das Paket nicht ausgeführt wird. Dies wird zum Beispiel beim Bauen verwendet deb
Pakete. Die Person, die das Paket erstellt, installiert nicht alles an seinem endgültigen Platz auf seinem eigenen System. Möglicherweise hat er bereits eine andere Version installiert und möchte diese nicht stören, oder er ist möglicherweise nicht einmal root. Also nutzt er
./configure --prefix=/usr
Das Programm wird also erwartet, dass es installiert wird /usr
wenn es dann läuft
make install DESTDIR=debian/tmp
um die Verzeichnisstruktur tatsächlich zu erstellen.
make install prefix=***
Nummer 3 wird es an einem anderen Ort installieren, aber nicht alle Verzeichnisse erstellen DESTDIR=/foo/bar/baz
möchten. Es wird häufig mit GNU stow via verwendet
./configure --prefix=/usr/local && make && sudo make install prefix=/usr/local/stow/foo
die Binärdateien in installieren würde /usr/local/stow/foo/bin
. Im Vergleich,
make install DESTDIR=/usr/local/stow/foo
würde Binärdateien installieren in /usr/local/stow/foo/usr/local/bin
.
Dies kann helfen, die Verwendung von zu veranschaulichen DESTDIR
und --prefix
(aus hier):
Mehrere Installationen mit –prefix und DESTDIR:
Geben Sie für jeden Build eine andere –prefix Position/Option an – zur Konfigurationszeit. Zum Beispiel:
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
Aus openssl/INSTALL
Paketersteller, die die Bibliothek für Standardspeicherorte konfigurieren möchten, aber das Paket woanders installiert haben, damit es einfach gepackt werden kann, können verwenden
$ make INSTALL_PREFIX=/tmp/package-root install
(oder geben Sie “–install_prefix=/tmp/package-root” als Konfigurationsoption an). Das angegebene Präfix wird allen Dateinamen der Installationsziele vorangestellt.
Dies ist kein Standard, aber INSTALL_PREFIX wird in einigen anderen Programmen verwendet.
Dies funktioniert für OpenSSL-Versionen vor 1.1.x. OpenSSL 1.1.x und höher können übliche erkennen DESTDIR
.