Was macht --prefix genau, wenn es in ./configure verwendet wird?

29

Ich hatte nur eine einfache Frage, die mich wahrscheinlich dumm aussehen lässt, aber ich lerne

Wenn ich a

./configure --prefix/usr/bin/

Was macht das Präfix? Ist dies nur die Installation des Pakets an diesem Ort

Und kann eine Antwort eine ausführlichere Antwort auf eine komplizierte Installation geben und die dazugehörigen Präfixe und Optionen detailliert erläutern?

Wenn ich eine apt-get-Installation ausführen würde, wie würde ich sie an einem bestimmten Ort mit Präfix installieren?

Habe ich auch gesehen

 PREFIX=/tmp/installdir make


 PREFIX=/tmp/installdir make install

Wenn das Präfix in ./configure aufgerufen wird, warum wird es in diesen beiden Beispielen immer erstellt?

Danke im Voraus!


quelle
Einige Infos hier: GNU Coding Standards: Verzeichnisvariablen
steeldriver
überprüfe die aktualisierte Antwort
luv.preet
freetds.org/userguide/config.htm , dies wird dir mehr helfen
luv.preet
Prüfer: Hier geht es um die Installation von Software . Es hat drei Off-Topic- Close-Votes als "Nicht über Ubuntu". Wenn das Schließen irgendwie mit einer tatsächlichen Site- Richtlinie vereinbar ist , schlage ich vor, dies zu kommentieren. Andernfalls wird es wahrscheinlich wieder geöffnet, auch wenn es geschlossen ist.
Eliah Kagan

Antworten:

32

Wenn Sie Software mit make installoder installieren sudo make install, werden verschiedene Dateien in verschiedenen Verzeichnissen abgelegt. Ausführbare Dateien, die Befehle bereitstellen, die der Benutzer ausführen soll, werden normalerweise in ein binVerzeichnis verschoben, Bibliotheken werden normalerweise in ein libVerzeichnis verschoben, Handbuchseiten werden normalerweise in ein manVerzeichnis verschoben und so weiter.

Bei der Ausführung ./configurekönnen Sie mit dieser --prefixOption angeben, wo sich diese Verzeichnisse befinden . Es wird aufgerufen, --prefixweil Sie damit das Präfix angeben können , das in den Pfaden zu jedem der Verzeichnisse angezeigt wird, in denen Dateien aus dem Programm oder der Bibliothek, die Sie erstellen, installiert werden sollen. Die meisten configureSkripte unterstützen dies --prefix, und das Weglassen und Ausführen von Skripten ./configureentspricht in der Regel./configure --prefix=/usr/local .

Um dies genauer zu beantworten, habe ich zwei Abschnitte aus meiner Antwort auf Wie installiere ich die TAR-Datei "global"? (unter Unix & Linux ), die sich speziell mit dieser Frage befassen:

Konfigurieren Ihres Builds

Wenn Sie Quellcode haben, der durch Ausführen von ./configure und kompiliert wurde make, verwenden Sie normalerweise make install(oder sudo make install), um ihn zu installieren. Dadurch werden Dateien aus dem Build-Verzeichnis in den Installationspfad kopiert. Wenn das zu installierende Objekt ausführbare Befehle bereitstellt, werden diese ausführbaren Dateien in der Regel in ein Verzeichnis kopiert, das sich in befindet $PATHoder zu dem Sie möglicherweise hinzufügen sollten $PATH .

Obwohl das Erstellen und Installieren von Software oft so einfach wie das Ausführen ./configureist make, möchten Sie manchmal make checkoder make testund dann make installoder sudo make installmanchmal Optionen an das configureSkript übergeben, um das Build zu konfigurieren. Insbesondere konfigurieren Sie , wie Pfnuesel sagt , auf diese Weise, wo die Software installiert werden soll. Obwohl der make installSchritt die Software tatsächlich installiert, werden in der Regel die Speicherorte festgelegt, an denen alles installiert wird ./configure.

Die häufigste Option hierfür ist --prefix. Das Standardpräfix configureist normalerweise , wenn Sie nicht angeben, was verwendet werden soll /usr/local. (Gelegentlich verwendet der Quellcode eines Programms oder einer Bibliothek standardmäßig ein anderes Präfix. Glücklicherweise ist dies selten.)

Ist ./configurealso meist gleichbedeutend mit ./configure --prefix=/usr/local. Um Software in Ihrem Home-Verzeichnis zu installieren, können Sie ./configure --prefix=/home/galahad(sofern /home/galahades sich um Ihr Home-Verzeichnis handelt) oder verwenden --prefix="$HOME". Dann musst du natürlich noch die Software mit bauen und installieren make. Ich sollte sagen, dass nicht jede Software, die in Quellcodeform vertrieben wird, auf diese Weise erstellt wird. Sie sollten immer nach Dokumentation im extrahierten Quellcode-Archiv suchen.

Was --prefixbedeutet

Wenn Sie ausführen , geben Sie an, dass die Software unter dem Verzeichnis installiert werden soll . Dabei werden jedoch selten, wenn überhaupt, lose Dateien abgelegt . Stattdessen werden Dateien, die unterschiedlichen Zwecken dienen, in den verschiedenen Unterverzeichnissen von abgelegt . Wenn diese Unterverzeichnisse nicht vorhanden sind, werden sie erstellt../configure --prefix=directorydirectorydirectorydirectory

Ausführbare Dateien gehen normalerweise ein directory/bin, obwohl sie einsteigen können, directory/sbinwenn sie üblicherweise für die Systemadministration verwendet werden, oder (heutzutage seltener), directory/gameswenn es sich um Spiele handelt. Bibliotheken gehen in directory/liboder ein anderes ähnlich benanntes Verzeichnis wie directory/lib32. Header-Dateien gehen rein directory/include. Manualseiten gehen rein directory/man. Von der Software verwendete Datendateien gehen ein directory/share.

Das bedeutet directoryes, ein Präfix zu sein . Es ist das übergeordnete Verzeichnis, das die Speicherorte enthält, an denen verschiedene Dateien installiert werden. Es erscheint daher als Präfix in den absoluten Pfaden der meisten Dateien und Verzeichnisse, die durch Ausführen von make install oder erstellt wurden sudo make install.

Hiervon gibt es einige Ausnahmen. Systemweite Konfigurationsdateien - die manchmal erstellt werden, wenn die Software installiert wird, die sie verwendet, jedoch nicht immer - werden normalerweise verwendet /etc. Dies wird normalerweise nicht durch die Angabe eines anderen Präfixes beeinflusst. Auch wenn Sie viel Software installieren /usr/local, wird diese meistens weiterhin verwendet /etc, und Ihr /usr/local/etcVerzeichnis ist wahrscheinlich nicht vorhanden, leer oder enthält nur sehr wenige Dateien.

Auf vielen Systemen erhalten Sie durch Ausführen weitere Informationen zum typischen Dateisystemlayout man hier. Wenn Sie ein GNU / Linux-System verwenden, interessiert Sie möglicherweise der Dateisystem-Hierarchiestandard .

Eliah Kagan
quelle
2

Hier erfahren Sie, wo sich die Dinge befinden, die zum Konfigurieren des aktuellen Pakets oder der aktuellen Software erforderlich sind.

Wie in einem einfachen Fall kann es den Speicherort von SSL-Bibliotheken ermitteln:

--with-libssh2=/usr/local  #used in configuring nagios

Außerdem erfahren Sie, welche Pakete Sie nicht konfigurieren müssen, um das Programm entsprechend Ihrem System zu kompilieren:

--disable-shared  # used in configuring nagios
--disable-link-balancer  # used in configuring Firehol

Dies sind nur zusätzliche Optionen, um eine für Ihr System geeignete Kompilierung zu erstellen. Es ist was ich denke. Korrigiere mich, wenn es etwas anderes ist.

Die --prefix=PREFIXOption installiert architekturunabhängige Dateien in PREFIX. Wenn Sie einen make installBefehl ausführen , werden Bibliotheken im PREFIX/libVerzeichnis abgelegt , ausführbare Dateien im PREFIX/binVerzeichnis usw.

Wenn dieses Argument nicht an den configureBefehl übergeben wird, lautet der Standardwert /usr/local.

luv.preet
quelle