Einführung
In diesem Lab lernen Sie den grundlegenden Prozess kennen, wie man Software unter Linux aus dem Quellcode erstellt und installiert. Dies ist eine entscheidende Fähigkeit für Anwendungen, die nicht im Paketmanager Ihrer Distribution verfügbar sind oder wenn Sie spezifische benutzerdefinierte Funktionen aktivieren müssen. Sie werden mit einem praxisnahen Beispiel arbeiten, dem Pure-FTPd-Server, um jede Phase des Installations-Workflows aus dem Quellcode zu verstehen.
Sie beginnen damit, den Quellcode aus einer komprimierten Archivdatei, einem sogenannten Tarball, mit dem Befehl tar zu entpacken. Als Nächstes bereiten Sie die Build-Umgebung vor, indem Sie das Skript ./configure ausführen, und kompilieren anschließend den Quellcode mit dem Befehl make in ausführbare Programme. Nach einer erfolgreichen Kompilierung installieren Sie die Software systemweit mit make install. Abschließend erfahren Sie, wie Sie die Software ordnungsgemäß deinstallieren und die Quelldateien bereinigen, womit Sie den gesamten Lebenszyklus einer Installation aus dem Quellcode abschließen.
Quellcode mit tar entpacken
In diesem Schritt lernen Sie, wie Sie ein Quellcode-Archiv, das allgemein als "Tarball" bekannt ist, mit dem Befehl tar entpacken. Software-Quellcode wird häufig in komprimierten Archivdateien wie .tar.gz verteilt, um alle notwendigen Dateien zu bündeln und die Gesamtdateigröße zu reduzieren.
Zuerst stellen wir sicher, 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.53.tar.gz in der Ausgabe sehen.
total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Nun verwenden wir den Befehl tar, um den Inhalt dieses Archivs zu entpacken. Die Optionen, die wir verwenden, sind:
-x: zum Entpacken (extract) von Dateien aus einem Archiv.-z: zum Dekomprimieren des Archivs mittels gzip, was durch die Endung.gzangezeigt wird.-v: für eine verbose (ausführliche) Ausgabe, die alle Dateien auflistet, während sie entpackt werden.-f: zur Angabe des filenames (Dateinamens) des zu verarbeitenden Archivs.
Führen Sie den folgenden Befehl in Ihrem Terminal aus, um das Archiv zu entpacken:
tar -zxvf pure-ftpd-1.0.53.tar.gz
Die Option -v bewirkt, dass tar den Namen jeder Datei ausgibt, die es entpackt. Die Ausgabe wird recht lang sein, sollte aber dem folgenden Beispiel ähneln und die Verzeichnisstruktur sowie die erstellten Dateien zeigen.
pure-ftpd-1.0.53/
pure-ftpd-1.0.53/AUTHORS
pure-ftpd-1.0.53/README
pure-ftpd-1.0.53/README.LDAP
pure-ftpd-1.0.53/README.MySQL
pure-ftpd-1.0.53/README.PGSQL
...
pure-ftpd-1.0.53/src/puredb_p.h
pure-ftpd-1.0.53/src/pure-quotacheck.c
pure-ftpd-1.0.53/src/pure-uploadscript.c
Sobald der Befehl abgeschlossen ist, wurde ein neues Verzeichnis mit dem Quellcode erstellt. Verwenden wir erneut ls -l, um dieses neue Verzeichnis zu sehen.
ls -l
Sie sollten nun das Verzeichnis pure-ftpd-1.0.53 neben dem ursprünglichen Tarball sehen.
total 752
drwxr-xr-x 10 labex labex 4096 Nov 10 12:05 pure-ftpd-1.0.53
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Sie haben den Quellcode erfolgreich aus dem Archiv entpackt. Im nächsten Schritt navigieren wir in dieses neue Verzeichnis und beginnen mit dem Konfigurations- und Kompilierungsprozess.
Software mit ./configure und make konfigurieren und kompilieren
In diesem Schritt konfigurieren Sie den Quellcode für Ihr spezifisches System und kompilieren ihn dann in ausführbare Programme. Dies ist ein standardmäßiger zweiteiliger Prozess zum Erstellen von Software aus dem Quellcode unter Linux.
Zuerst müssen Sie in das Verzeichnis wechseln, das im vorherigen Schritt erstellt wurde. Verwenden Sie den Befehl cd, um in das Verzeichnis pure-ftpd-1.0.53 zu navigieren.
cd ~/project/pure-ftpd-1.0.53
Nachdem Sie sich nun im Quellcode-Verzeichnis befinden, besteht der erste Teil des Prozesses darin, das Skript configure auszuführen. Dieses Skript überprüft Ihr System auf alle notwendigen Werkzeuge, Bibliotheken und Abhängigkeiten, die zum Erstellen der Software erforderlich sind. Anschließend generiert es ein Makefile, das Anweisungen für den Kompilierungsprozess enthält.
Um das Skript auszuführen, müssen Sie ./ vor den Namen setzen. Dies weist die Shell an, im aktuellen Verzeichnis nach dem Skript configure zu suchen.
./configure
Das Skript führt eine Reihe von Prüfungen durch, und Sie werden sehen, wie eine Menge Text durchläuft. Das ist normal. Ein erfolgreicher Durchlauf endet mit einer Zusammenfassung, ähnlich der folgenden.
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 das Makefile erfolgreich erstellt wurde.
Der zweite Teil des Prozesses ist das Kompilieren des Codes. Der Befehl make liest das Makefile und führt den Compiler (wie gcc) mit den korrekten Optionen aus, um den menschenlesbaren Quellcode (.c-Dateien) in maschinenausführbare Binärdateien umzuwandeln.
Führen Sie nun den Befehl make aus.
make
Dieser Vorgang kann einen Moment dauern. Sie werden viele Zeilen Ausgabe sehen, während make den Compiler für jede Quelldatei aufruft. Dies ist der eigentliche Kompilierungsvorgang.
(CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/labex/project/pure-ftpd-1.0.53/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.53/src'
Sobald der Befehl make ohne Fehler abgeschlossen ist, wurde die Software erfolgreich kompiliert. Die Binärdateien sind nun bereit, auf dem System installiert zu werden, was Sie im nächsten Schritt tun werden.
Software mit make install installieren
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) noch im Quellcode-Verzeichnis. Der Befehl make install kopiert diese Dateien an die standardmäßigen, systemweiten Speicherorte, sodass die Software von überall aus ausgeführt werden kann.
Stellen Sie sicher, dass Sie sich noch im Verzeichnis ~/project/pure-ftpd-1.0.53 befinden.
Der Installationsprozess erfordert normalerweise das Schreiben von Dateien in Verzeichnisse wie /usr/local/bin und /usr/local/sbin, die dem Benutzer root gehören. Daher müssen Sie den Befehl sudo verwenden, um make install mit administrativen Rechten auszuführen.
Führen Sie den folgenden Befehl aus, um Pure-FTPd zu installieren:
sudo make install
Der Befehl make install liest das Makefile und führt die Installationsanweisungen aus. Sie werden eine Ausgabe sehen, die zeigt, wie Dateien erstellt und in Systemverzeichnisse kopiert werden.
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53/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.53/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53'
/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.53'
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 sich die ausführbare Datei pure-ftpd nun in einem Standard-Systemverzeichnis befindet.
/usr/local/sbin/pure-ftpd
Nachdem die Software installiert ist, ist sie technisch gesehen bereit für die Konfiguration und Verwendung. Für diese Übung führt Sie der nächste Schritt jedoch durch den Prozess der Deinstallation.
Software mit make uninstall und rm deinstallieren und bereinigen
In diesem letzten Schritt lernen Sie, wie Sie die aus dem Quellcode installierte Software ordnungsgemäß deinstallieren und die Build-Dateien bereinigen, um Ihr System in den ursprünglichen Zustand zurückzusetzen. Dies ist ein wichtiger Teil der manuellen Softwareverwaltung.
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 noch im Verzeichnis ~/project/pure-ftpd-1.0.53 befinden. Genau wie der Installationsprozess administrative Rechte erforderte, gilt dies auch für die Deinstallation. Verwenden Sie sudo mit dem Befehl make uninstall.
sudo make uninstall
Sie werden eine Ausgabe sehen, die anzeigt, dass Dateien aus den Systemverzeichnissen entfernt werden, in denen sie installiert wurden.
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53/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.53/src'
make[1]: Entering directory '/home/labex/project/pure-ftpd-1.0.53'
rm -f /usr/local/etc/pure-ftpd.conf
make[1]: Leaving directory '/home/labex/project/pure-ftpd-1.0.53'
Um zu bestätigen, dass die Software entfernt wurde, können Sie erneut den Befehl which verwenden.
which pure-ftpd
Diesmal sollte der Befehl keine Ausgabe erzeugen, da die ausführbare Datei pure-ftpd aus /usr/local/sbin gelöscht wurde und im PATH des Systems nicht mehr 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.53 und dessen gesamten Inhalt zu löschen.
rm -r pure-ftpd-1.0.53
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.53 ist nun verschwunden, und nur der ursprüngliche Tarball bleibt übrig.
total 748
-rw-r--r-- 1 labex labex 765432 Nov 10 12:00 pure-ftpd-1.0.53.tar.gz
Herzlichen Glückwunsch! Sie haben den gesamten Prozess der Softwareerstellung aus dem Quellcode erfolgreich abgeschlossen: Entpacken, Konfigurieren, Kompilieren, Installieren und schließlich Deinstallieren und Bereinigen.
Zusammenfassung
In diesem Lab haben Sie das Standardverfahren zum Erstellen und Installieren von Software aus dem Quellcode auf einem Linux-System kennengelernt. Sie begannen mit dem Entpacken eines komprimierten Quellcode-Archivs, auch bekannt als Tarball (.tar.gz), unter Verwendung des Befehls tar. Nach dem Entpacken navigierten Sie in das Quellverzeichnis, um das Skript ./configure auszuführen, das die Software für die Kompilierung vorbereitet, indem es Systemabhängigkeiten prüft und ein 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 zum Bereinigen der Build-Umgebung geübt. Sie haben gelernt, wie man den Befehl make uninstall verwendet, um die installierten Dateien vom System zu 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.



