Software aus Quellcode unter Linux erstellen

CompTIACompTIABeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Labor lernen Sie den grundlegenden Prozess des Erstellens und Installierens von Software aus ihrem Quellcode auf einem Linux-System. Dies ist eine entscheidende Fähigkeit für die Handhabung von Anwendungen, die nicht im Paketmanager Ihrer Distribution verfügbar sind, oder wenn Sie spezifische benutzerdefinierte Funktionen aktivieren müssen. Sie arbeiten mit einem realen Beispiel, dem Pure-FTPd-Server, um jede Phase des quellcodebasierten Installationsworkflows zu verstehen.

Sie beginnen mit dem Extrahieren des Quellcodes aus einer komprimierten Archivdatei, die üblicherweise als Tarball bezeichnet wird, unter Verwendung des tar-Befehls. Als Nächstes bereiten Sie die Build-Umgebung vor, indem Sie das ./configure-Skript ausführen, und kompilieren dann den Quellcode mit dem make-Befehl zu ausführbaren Programmen. Nach erfolgreicher Kompilierung installieren Sie die Software systemweit mit make install. Schließlich lernen Sie, wie Sie die Software ordnungsgemäß deinstallieren und die Quelldateien bereinigen, um den gesamten Lebenszyklus einer Quellcode-Installation abzuschließen.

Den Quellcode mit tar extrahieren

In diesem Schritt lernen Sie, wie Sie ein Quellcode-Archiv, allgemein als "Tarball" bezeichnet, mit dem tar-Befehl extrahieren. Der Quellcode von Software wird oft in komprimierten Archivdateien wie .tar.gz verteilt, um alle notwendigen Dateien zu bündeln und die Gesamtdateigröße zu reduzieren.

Zuerst bestätigen wir, dass das Quellcode-Archiv in unserem aktuellen Arbeitsverzeichnis, ~/project, verfügbar ist. Verwenden Sie den Befehl ls -l, um die Dateien und ihre Details aufzulisten.

ls -l

Sie sollten die Datei pure-ftpd-1.0.50.tar.gz in der Ausgabe sehen.

total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.50.tar.gz

Nun verwenden wir den tar-Befehl, um den Inhalt dieses Archivs zu extrahieren. Die von uns verwendeten Optionen sind:

  • -x: zum extrahieren von Dateien aus einem Archiv.
  • -z: zum Dekomprimieren des Archivs mit gzip, was durch die .gz-Erweiterung angezeigt wird.
  • -v: für verbose Ausgabe, die alle Dateien auflistet, während sie extrahiert werden.
  • -f: zum Angeben des Filename des zu verarbeitenden Archivs.

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um das Archiv zu extrahieren:

tar -zxvf pure-ftpd-1.0.50.tar.gz

Die Option -v bewirkt, dass tar den Namen jeder extrahierten Datei ausgibt. Die Ausgabe wird ziemlich lang sein, sollte aber dem folgenden Beispiel ähneln und die erstellte Verzeichnisstruktur und Dateien anzeigen.

pure-ftpd-1.0.50/
pure-ftpd-1.0.50/AUTHORS
pure-ftpd-1.0.50/README
pure-ftpd-1.0.50/README.LDAP
pure-ftpd-1.0.50/README.MySQL
pure-ftpd-1.0.50/README.PGSQL
...
pure-ftpd-1.0.50/src/puredb_p.h
pure-ftpd-1.0.50/src/pure-quotacheck.c
pure-ftpd-1.0.50/src/pure-uploadscript.c

Sobald der Befehl abgeschlossen ist, wurde ein neues Verzeichnis mit dem Quellcode erstellt. Lassen Sie uns erneut ls -l verwenden, um dieses neue Verzeichnis zu sehen.

ls -l

Sie sollten nun das Verzeichnis pure-ftpd-1.0.50 neben dem ursprünglichen Tarball sehen.

total 752
drwxr-xr-x 10 labex labex    4096 Nov 10 12:05 pure-ftpd-1.0.50
-rw-r--r--  1 labex labex  765432 Nov 10 12:00 pure-ftpd-1.0.50.tar.gz

Sie haben den Quellcode erfolgreich aus dem Archiv extrahiert. Im nächsten Schritt werden wir in dieses neue Verzeichnis wechseln und mit dem Konfigurations- und Kompilierungsprozess beginnen.

Konfigurieren und Kompilieren der Software mit ./configure und make

In diesem Schritt konfigurieren Sie den Quellcode für Ihr spezifisches System und kompilieren ihn dann zu ausführbaren Programmen. Dies ist ein standardmäßiger zweistufiger Prozess zum Erstellen von Software aus dem Quellcode auf Linux-Systemen.

Zuerst müssen Sie Ihren aktuellen Standort in das Verzeichnis ändern, das im vorherigen Schritt erstellt wurde. Verwenden Sie den Befehl cd, um in das Verzeichnis pure-ftpd-1.0.50 zu wechseln.

cd ~/project/pure-ftpd-1.0.50

Da Sie sich nun im Quellcode-Verzeichnis befinden, besteht der erste Teil des Prozesses darin, das configure-Skript auszuführen. Dieses Skript prüft Ihr System auf alle notwendigen Werkzeuge, Bibliotheken und Abhängigkeiten, die zum Erstellen der Software erforderlich sind. Anschließend generiert es eine Makefile, die Anweisungen für den Kompilierungsprozess enthält.

Um das Skript auszuführen, müssen Sie ./ vor seinem Namen eingeben. Dies weist die Shell an, im aktuellen Verzeichnis nach dem configure-Skript zu suchen.

./configure

Das Skript führt eine Reihe von Prüfungen durch, und Sie werden viele Ausgaben sehen, die durchlaufen. Das ist normal. Ein erfolgreicher Durchlauf endet mit einer Zusammenfassung, ähnlich der untenstehenden.

checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
...
checking for OpenSSL... no
...
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating man/Makefile
...
config.status: executing depfiles commands

Pure-FTPd has been configured.

Beachten Sie die Zeilen config.status: creating Makefile. Dies bestätigt, dass die Makefile erfolgreich erstellt wurde.

Der zweite Teil des Prozesses ist das Kompilieren des Codes. Der make-Befehl liest die Makefile und führt den Compiler (wie gcc) mit den richtigen Optionen aus, um den menschenlesbaren Quellcode (.c-Dateien) in maschinenlesbare Binärdateien umzuwandeln.

Führen Sie nun den make-Befehl aus.

make

Dieser Prozess kann einige Momente dauern. Sie werden viele Zeilen mit Ausgaben sehen, während make den Compiler für jede Quelldatei aufruft. Dies ist die eigentliche Kompilierung.

(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/labex/project/pure-ftpd-1.0.50/config/missing automake-1.15 --gnu src/Makefile)
...
gcc -g -O2 -Wall -W -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -c pure-ftpd.c
...
gcc -g -O2 -Wall -W -Wshadow -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline   -o pure-ftpd pure_ftpd-pure-ftpd.o pure_ftpd-log.o ...
...
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.50/src'

Sobald der make-Befehl ohne Fehler abgeschlossen ist, ist die Software erfolgreich kompiliert. Die Binärdateien sind nun bereit, auf dem System installiert zu werden, was Sie im nächsten Schritt tun werden.

Installieren der Software mit make install

In diesem Schritt installieren Sie die kompilierte Software auf Ihrem System. Nach dem Kompilieren des Quellcodes mit make befinden sich die resultierenden Binärdateien und andere notwendige Komponenten (wie Dokumentation und Konfigurationsdateien) immer noch im Quellcode-Verzeichnis. Der Befehl make install kopiert diese Dateien an die standardmäßigen, systemweiten Speicherorte, damit die Software von überall ausgeführt werden kann.

Stellen Sie sicher, dass Sie sich immer noch im Verzeichnis ~/project/pure-ftpd-1.0.50 befinden.

Der Installationsprozess erfordert normalerweise das Schreiben von Dateien in Verzeichnisse wie /usr/local/bin und /usr/local/sbin, die dem root-Benutzer gehören. Daher müssen Sie den Befehl sudo verwenden, um make install mit Administratorrechten auszuführen.

Führen Sie den folgenden Befehl aus, um Pure-FTPd zu installieren:

sudo make install

Der Befehl make install liest die Makefile und führt die Installationsanweisungen aus. Sie sehen Ausgaben, die zeigen, wie Dateien erstellt und in Systemverzeichnisse kopiert werden.

make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.50/src'
/usr/bin/mkdir -p '/usr/local/sbin'
/usr/bin/install -c pure-ftpd pure-pw pure-pwconvert pure-authd pure-certd pure-uploadscript pure-quotacheck '/usr/local/sbin'
/usr/bin/mkdir -p '/usr/local/share/man/man8'
/usr/bin/install -c -m 644 ../man/pure-ftpd.8 ../man/pure-pw.8 ../man/pure-pwconvert.8 ../man/pure-authd.8 ../man/pure-certd.8 '/usr/local/share/man/man8'
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.50/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.50'
/usr/bin/mkdir -p '/usr/local/etc'
/usr/bin/install -c -m 644 pure-ftpd.conf '/usr/local/etc'
make[1]: Nothing to be done for 'install-data-am'.
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.50'

Die Software ist nun installiert. Eine einfache Möglichkeit, dies zu überprüfen, ist die Verwendung des Befehls which, der den PATH des Systems nach einer ausführbaren Datei durchsucht und deren vollständigen Pfad ausgibt.

which pure-ftpd

Wenn die Installation erfolgreich war, sollten Sie die folgende Ausgabe sehen, die anzeigt, dass die ausführbare Datei pure-ftpd nun in einem standardmäßigen Systemverzeichnis liegt.

/usr/local/sbin/pure-ftpd

Nach der Installation der Software ist sie technisch gesehen für die Konfiguration und Verwendung bereit. Für diese Übung führt Sie der nächste Schritt jedoch durch den Prozess der Deinstallation.

Deinstallieren der Software und Bereinigen mit make uninstall und rm

In diesem letzten Schritt lernen Sie, wie Sie die von Ihnen aus dem Quellcode installierte Software ordnungsgemäß deinstallieren und die Build-Dateien bereinigen, um Ihr System in seinen ursprünglichen Zustand zurückzuversetzen. Dies ist ein wichtiger Teil der manuellen Verwaltung von Software.

Die meisten gut geschriebenen Quellcode-Pakete, die ein Makefile verwenden, bieten ein uninstall-Ziel. Dieses Ziel ist darauf ausgelegt, die Aktionen von make install rückgängig zu machen und alle Dateien zu entfernen, die in Systemverzeichnisse kopiert wurden.

Stellen Sie zunächst sicher, dass Sie sich immer noch im Verzeichnis ~/project/pure-ftpd-1.0.50 befinden. Genau wie der Installationsprozess benötigte auch die Deinstallation Administratorrechte. Verwenden Sie sudo mit dem Befehl make uninstall.

sudo make uninstall

Sie sehen Ausgaben, die darauf hinweisen, dass Dateien aus den Systemverzeichnissen entfernt werden, in die sie installiert wurden.

make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.50/src'
rm -f /usr/local/sbin/pure-ftpd /usr/local/sbin/pure-pw /usr/local/sbin/pure-pwconvert /usr/local/sbin/pure-authd /usr/local/sbin/pure-certd /usr/local/sbin/pure-uploadscript /usr/local/sbin/pure-quotacheck
rm -f /usr/local/share/man/man8/pure-ftpd.8 /usr/local/share/man/man8/pure-pw.8 /usr/local/share/man/man8/pure-pwconvert.8 /usr/local/share/man/man8/pure-authd.8 /usr/local/share/man/man8/pure-certd.8
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.50/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.50'
rm -f /usr/local/etc/pure-ftpd.conf
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.50'

Um zu bestätigen, dass die Software entfernt wurde, können Sie den Befehl which erneut verwenden.

which pure-ftpd

Dieses Mal sollte der Befehl keine Ausgabe erzeugen, da die ausführbare Datei pure-ftpd aus /usr/local/sbin gelöscht wurde und nicht mehr im PATH des Systems gefunden werden kann.

Nachdem die Software deinstalliert ist, besteht der letzte Schritt darin, das Quellcode-Verzeichnis selbst zu entfernen. Sie können ein Verzeichnis nicht entfernen, während Sie sich darin befinden. Navigieren Sie daher zuerst zurück in das Stammverzeichnis Ihres Projekts.

cd ~/project

Verwenden Sie nun den Befehl rm mit der Option -r (rekursiv), um das Verzeichnis pure-ftpd-1.0.50 und dessen gesamten Inhalt zu löschen.

rm -r pure-ftpd-1.0.50

Dieser Befehl erzeugt bei Erfolg keine Ausgabe. Sie können die Löschung überprüfen, indem Sie den Inhalt des Verzeichnisses ~/project auflisten.

ls -l

Das Verzeichnis pure-ftpd-1.0.50 ist nun verschwunden, und nur das ursprüngliche Tarball ist übrig.

total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.50.tar.gz

Herzlichen Glückwunsch! Sie haben den gesamten Prozess des Erstellens von Software aus dem Quellcode erfolgreich abgeschlossen: Extrahieren, Konfigurieren, Kompilieren, Installieren und schließlich Deinstallieren und Bereinigen.

Zusammenfassung

In diesem Lab haben Sie das Standardverfahren zum Erstellen und Installieren von Software aus ihrem Quellcode auf einem Linux-System kennengelernt. Sie begannen mit dem Extrahieren eines komprimierten Quellcode-Archivs, auch bekannt als Tarball (.tar.gz), mit dem Befehl tar. Nach der Extraktion navigierten Sie in das Quellcode-Verzeichnis, um das Skript ./configure auszuführen, das die Software für die Kompilierung vorbereitet, indem es Systemabhängigkeiten prüft und eine Makefile erstellt. Schließlich verwendeten Sie den Befehl make, um den Quellcode in ausführbare Binärdateien zu kompilieren, und make install, um die Software in die entsprechenden Systemverzeichnisse zu kopieren.

Darüber hinaus haben Sie die richtige Methode zum Entfernen der Software und zur Bereinigung der Build-Umgebung geübt. Sie haben gelernt, wie Sie mit dem Befehl make uninstall die installierten Dateien vom System entfernen. Um den Bereinigungsprozess abzuschließen, haben Sie das ursprüngliche Quellcode-Verzeichnis mit dem Befehl rm entfernt und so sichergestellt, dass das System in seinen vorherigen Zustand zurückversetzt wurde.