it-swarm.com.de

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

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!

26
user610658

Wenn Sie Software mit make install oder Sudo make install installieren, werden verschiedene Dateien in verschiedenen Verzeichnissen abgelegt. Ausführbare Dateien, die Befehle bereitstellen, die der Benutzer ausführen soll, befinden sich normalerweise in einem Verzeichnis bin, Bibliotheken befinden sich normalerweise in einem Verzeichnis lib, Handbuchseiten befinden sich normalerweise in einem Verzeichnis man und so weiter.

Wenn Sie ./configure ausführen, können Sie mit die Option --prefix angeben, wo diese Verzeichnisse sind . Es heißt --prefix, weil Sie damit das Präfix angeben können, das in den Pfaden zu jedem der Verzeichnisse angezeigt wird, in denen sich Dateien aus dem Programm oder der Bibliothek befinden, die Sie erstellen installiert werden. Die meisten configure-Skripts unterstützen --prefix, und das Weglassen und Ausführen von ./configure entspricht in der Regel ./configure --prefix=/usr/local.

Um dies genauer zu beantworten, habe ich zwei Abschnitte von meine Antwort bis Wie installiere ich die TAR-Datei "global"? (unter nix & Linux wiedergegeben =), die sich speziell mit dieser Frage befassen:

Konfigurieren Ihres Builds

Wenn Sie Quellcode haben, der durch Ausführen von ./configure und make kompiliert wurde, 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 $PATH befindet oder zu $PATH hinzugefügt werden sollte.

Obwohl das Erstellen und Installieren von Software oft so einfach ist wie das Ausführen von ./configure, make, manchmal make check oder make test und dann make install oder Sudo make install Optionen an das Skript configure übergeben, um den Build zu konfigurieren. Insbesondere wie pfnuesel , so konfigurieren Sie , wo sich die Software befinden soll Eingerichtet. Obwohl der Schritt make install die Software tatsächlich installiert, werden die Speicherorte, an denen alles installiert wird, normalerweise im Schritt ./configure festgelegt.

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

Daher ist ./configure normalerweise äquivalent zu ./configure --prefix=/usr/local. Zum Installieren der Software in Ihrem Ausgangsverzeichnis können Sie ./configure --prefix=/home/galahad (wenn /home/galahad Ihr Ausgangsverzeichnis ist) oder --prefix="$HOME" verwenden. Dann müssen Sie die Software natürlich noch mit make erstellen und installieren. 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 --prefix bedeutet

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

Ausführbare Dateien werden normalerweise in directory/bin abgelegt, obwohl sie möglicherweise in directory/sbin abgelegt werden, wenn sie üblicherweise für die Systemverwaltung verwendet werden, oder (heutzutage seltener) in directory/games, wenn es sich um Spiele handelt . Bibliotheken befinden sich in directory/lib oder einem anderen Verzeichnis mit ähnlichem Namen wie directory/lib32. Header-Dateien gehen in directory/include. Manpages gehen in directory/man. Von der Software verwendete Datendateien werden in directory/share abgelegt.

Das bedeutet, dass directory ein Präfix ist. 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 Sudo make install erstellt wurden.

Hiervon gibt es einige Ausnahmen. Systemweite Konfigurationsdateien - die manchmal bei der Installation der Software erstellt werden, die sie verwendet, jedoch nicht immer - werden normalerweise in /etc abgelegt. Dies wird normalerweise nicht durch die Angabe eines anderen Präfixes beeinflusst. Selbst wenn Sie eine Menge Software in /usr/local installieren, wird meistens /etc verwendet, und Ihr /usr/local/etc -Verzeichnis ist wahrscheinlich nicht vorhanden, leer oder enthält nur sehr wenige Dateien.

Auf vielen Systemen erhalten Sie weitere Informationen zum typischen Dateisystem-Layout, indem Sie man hier ausführen. Wenn Sie ein GNU/Linux-System verwenden, könnte Sie der Filesystem Hierarchy Standard interessieren.

31
Eliah Kagan

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 Option --prefix=PREFIX installiert architekturunabhängige Dateien in PREFIX. Wenn Sie einen Befehl make install ausführen, werden Bibliotheken im Verzeichnis PREFIX/lib abgelegt, ausführbare Dateien im Verzeichnis PREFIX/bin usw.

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

1
luv.preet