it-swarm.com.de

Installiere, aber nicht in Standardverzeichnisse?

Ich möchte 'make install' ausführen, also habe ich alles, was ich brauche, aber ich möchte, dass die Dinge in ihrem eigenen Ordner installiert werden, im Gegensatz zu/usr/bin des Systems usw. Ist das möglich? selbst wenn es Werkzeuge in der/usr/bin usw. referenziert? 

115
jphenow

Das hängt vom Paket ab. Wenn das Makefile von GNU Autotools (./configure) generiert wird, können Sie den Zielort normalerweise wie folgt festlegen:

./configure --prefix=/somewhere/else/than/usr/local

Wenn das Makefile nicht von Autotools generiert, sondern zusammen mit der Software verteilt wird, öffnen Sie es einfach in einem Editor und ändern Sie es. Das Installationszielverzeichnis ist wahrscheinlich irgendwo in einer Variablen definiert.

161
Thomas

Da Sie nicht wissen, welche Version von automake Sie verwenden können, können Sie die UmgebungsvariableDESTDIRverwenden.
Siehe Makefile, um sicherzugehen.

Zum Beispiel:

 export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install
30
Andor

Es kann davon abhängen, was von dem zu kompilierenden Modul unterstützt wird. Wenn Ihr Makefile mithilfe von Autotools generiert wird, verwenden Sie Folgendes:

--prefix=<myinstalldir>

beim Ausführen der ./configure

bei einigen Paketen können Sie beim Ausführen auch Folgendes überschreiben:

make prefix=<myinstalldir>

wenn Sie jedoch nicht ./configure verwenden, können Sie das Makefile nur öffnen und prüfen, wenn Sie sicher sind. Es sollte eine der ersten Variablen oben sein.

15
Tree77
make DESTDIR=./new/customized/path install

Dieser schnelle Befehl funktionierte für mich bei der Installation von opencv Version 3.2.0 unter Ubuntu 16. Der DESTDIR-Pfad kann relativ und absolut sein.

Eine solche Umleitung kann auch nützlich sein, wenn der Benutzer keine Administratorrechte hat, solange der Speicherort von DESTDIR für den Benutzer berechtigt ist. z. B./home // 

14
samasat

Wenn das Paket einen Makefile.PL enthält, kann Folgendes verwendet werden:

Perl Makefile.PL PREFIX=/home/my/local/lib LIB=/home/my/local/lib
make
make test
make install

* weitere Erklärung: https://www.perlmonks.org/?node_id=564720

3
eli

Ich habe die obigen Lösungen ausprobiert. Keiner hat gearbeitet.

Am Ende habe ich die Makefile-Datei geöffnet und den Präfixpfad manuell in den gewünschten Installationspfad geändert (siehe unten).

PREFIX ?= "installation path"

Als ich --prefix ausprobierte, beklagte "make", dass es keine solche Befehlseingabe gibt. Möglicherweise akzeptieren jedoch einige Pakete --prefix, was natürlich eine sauberere Lösung ist.

0
Majid Azimi