Weil jeder Schritt andere Dinge tut
Bereiten Sie die (Setup-) Umgebung für das Erstellen vor
./configure
Dieses Skript enthält viele Optionen, die Sie ändern sollten. Wie --prefix
oder --with-dir=/foo
. Das heißt, jedes System hat eine andere Konfiguration. ./configure
Überprüft auch , ob Bibliotheken fehlen, die installiert werden sollen. Wenn hier etwas nicht stimmt , wird Ihre Anwendung nicht erstellt . Aus diesem Grund haben Distributionen Pakete, die an verschiedenen Orten installiert sind, da jede Distribution der Meinung ist, dass es besser ist, bestimmte Bibliotheken und Dateien in bestimmten Verzeichnissen zu installieren. Es soll laufen ./configure
, aber in der Tat sollten Sie es immer ändern.
Schauen Sie sich zum Beispiel die Arch Linux-Paketseite an . Hier sehen Sie, dass jedes Paket einen anderen Konfigurationsparameter verwendet (vorausgesetzt, es werden Autotools für das Build-System verwendet).
Aufbau des Systems
make
Dies ist eigentlich make all
standardmäßig. Und jede Marke hat andere Aktionen zu tun. Einige erstellen, andere führen Tests nach dem Erstellen durch, andere checken aus externen SCM-Repositorys aus. Normalerweise müssen Sie keine Parameter angeben, aber einige Pakete führen sie wieder anders aus.
Auf dem System installieren
make install
Dadurch wird das Paket an der mit configure angegebenen Stelle installiert. Wenn Sie möchten, können Sie angeben ./configure
, dass auf Ihr Home-Verzeichnis verwiesen werden soll. Viele Konfigurationsoptionen zeigen jedoch auf /usr
oder /usr/local
. Das heißt, Sie müssen dann tatsächlich verwenden, sudo make install
da nur root Dateien nach / usr und / usr / local kopieren kann.
Jetzt sehen Sie, dass jeder Schritt eine Voraussetzung für den nächsten Schritt ist. Jeder Schritt ist eine Vorbereitung, damit die Dinge problemlos funktionieren. Distros verwenden diese Metapher, um Pakete zu erstellen (wie RPM, Deb usw.).
Hier sehen Sie, dass jeder Schritt tatsächlich einen anderen Zustand hat. Deshalb haben Paketmanager unterschiedliche Wrapper. Unten finden Sie ein Beispiel für einen Wrapper, mit dem Sie das gesamte Paket in einem Schritt erstellen können. Denken Sie jedoch daran, dass jede Anwendung einen anderen Wrapper hat (tatsächlich haben diese Wrapper einen Namen wie spec, PKGBUILD usw.):
def setup:
... #use ./configure if autotools is used
def build:
... #use make if autotools is used
def install:
... #use make all if autotools is used
Hier kann man Autotools verwenden, das heißt ./configure
, make
und make install
. Aber ein anderer kann SCons, Python-bezogenes Setup oder etwas anderes verwenden.
Wie Sie sehen, erleichtert die Aufteilung jedes Status die Wartung und Bereitstellung erheblich, insbesondere für Paketbetreuer und Distributionen.