Ich möchte 'make install' ausführen, damit ich alles habe, was ich brauche, aber ich möchte, dass die Dinge in einem eigenen Ordner installiert werden, im Gegensatz zu / usr / bin usw. des Systems. Ist das möglich? auch wenn es auf Tools in / usr / bin etc. verweist?
148
Antworten:
Das hängt vom Paket ab. Wenn das Makefile von GNU autotools (
./configure
) generiert wird , können Sie den Zielspeicherort normalerweise wie folgt festlegen :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.
quelle
make && make install
der configure-Klausel folgen?--prefix
ist, dass, wenn Sie anschließend einestrings
auf der resultierenden Binärdatei ausführen , Sie sehen, dass der Pfad darin gespeichert ist. Ich weiß nicht, warum dies passiert, aber ich möchte auf keinen Fall, dass meine Computerpfade auf Binärdateien gespeichert werden, die ich an andere Benutzer versende.Da Sie nicht wissen, welche Version von automake Sie verwenden können, können Sie die Umgebungsvariable DESTDIR verwenden .
Siehe Makefile, um sicherzugehen.
Beispielsweise:
quelle
Dieser Schnellbefehl funktionierte für mich bei der Installation von opencv Release 3.2.0 unter Ubuntu 16. Der DESTDIR-Pfad kann sowohl relativ als auch absolut sein.
Eine solche Umleitung kann auch nützlich sein, wenn der Benutzer keine Administratorrechte besitzt, solange der DESTDIR-Speicherort den richtigen Zugriff für den Benutzer hat. zB / home //
quelle
Dies kann davon abhängen, was von dem Modul unterstützt wird, das Sie kompilieren möchten. Wenn Ihr Makefile mithilfe von Autotools generiert wird, verwenden Sie:
--prefix=<myinstalldir>
beim Ausführen der ./configure
Bei einigen Paketen können Sie auch Folgendes überschreiben:
Wenn Sie jedoch ./configure nicht verwenden, können Sie dies nur feststellen, indem Sie das Makefile öffnen und überprüfen. Es sollte eine der ersten Variablen oben sein.
quelle
make prefix=...
dies zu Binärdateien mit falsch fest codierten Pfaden führen kann, da diese normalerweise nicht geändert werden können./configure --prefix=...
Wenn das Paket a enthält,
Makefile.PL
kann man verwenden:* Weitere Erklärung: https://www.perlmonks.org/?node_id=564720
quelle
Ich habe die oben genannten Lösungen ausprobiert. Keiner hat funktioniert.
Am Ende habe ich die Makefile-Datei geöffnet und den Präfixpfad wie unten manuell in den gewünschten Installationspfad geändert.
Als ich --prefix ausprobierte, beschwerte sich "make", dass es keine solche Befehlseingabe gibt. Einige Pakete akzeptieren jedoch möglicherweise --prefix, was natürlich eine sauberere Lösung ist.
quelle
--prefix
Option ist, zu./configure
der Sie VORher anrufenmake
.Versuchen Sie es mit INSTALL_ROOT.
quelle