man whichInhaltsverzeichnis
Programme selbst kompilieren (Linux)
Normalerweise werden die Pakete einer Linux-Distribution von dem Maintainer des Paketes gebaut und von der Distribution zur Verfügung gestellt. Die Programme können jedoch auch direkt aus den Quelltexten kompiliert werden. Ich werde dies am Beispiel des Pakets coreutils einmal zeigen. Darin sind viele wichtige Befehle wie ls oder date enthalten.
Generell läuft der Prozess immer nach dem folgenden Schema ab:
- Quelltext herunterladen und entpacken
configurefür die Konfiguration ausführenmakekompiliert den Quelltext in ausführbare Programmesudo make installkopiert die fertigen Programme an die richtige Stelle.
Herunterladen und Entpacken
Zunächst werden die Quellen heruntergeladen und entpackt.
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.24.tar.xz tar xf coreutils-8.24.tar.xz
Konfiguration
In der Datei INSTALL oder README wird beschrieben, wie das Paket gebaut werden muss. Dies ist nicht ganz einheitlich und funktioniert immer etwas anders. Es hat sich jedoch bewährt, die Programme configure (Konfiguration) und make (Kompilieren und Installieren) für diesen Prozess zu nutzen.
Der Befehl configure untersucht das aktuelle System und erstellt ein Skript, mit dessen Hilfe make anschließend den Quelltext in ein lauffähiges Programm übersetzten kann. Mit der Option --prefix kann das Ziel der erstellen Binärdateien angegeben werden.
cd coreutils-8.24/ less INSTALL ./configure --prefix=/home/bakera/tmp/coreutils/build
Kompilieren
Nun ist der Weg frei für die Erstellung der Programme. Die Quelltexte werden nun in ausführbare Programme übersetzt.
make
Installation
Der folgende Befehl kopiert schließlich die Binärdateien an die richtige Stelle.
make install
Nun können wir in das Zielverzeichnis wechseln und die Programme testen.
cd ../build/ ./bin/ls ./bin/date
Weitere Informationen
Weitere ausführliche Informationen bieten die Dokumentation von Ubuntu und ein Artikel des ubuntuusers-Wiki. Das folgende Video zeigt den Prozess noch einmal.
Übungen
Und jetzt bist du an der Reihe.
- Welche Versionen sind jeweils installiert?
- Vollziehe die obigen Schritte selbst nach und kompiliere das Paket
coreutilsin der aktuellen Version.
Eventuell werden Fehlermeldungen angezeigt, weil einige Programme fehlen. Prüfe, ob das Paketbuild-essentialbereits installiert ist. - Nun weißt du, wie man ein Programm aus dem Quelltext übersetzen und installieren kann. Suche jetzt nach einem anderen Paket und übersetze es direkt aus den Quellen. Die Pakete von gnu.org sind ein erster guter Anlaufpunkt.
- Dokumentiere dein Vorgehen.
- Für Profis: Linux From Scratch ist eine sehr ausführliche Anleitung, die erklärt, wie man ein ganzes Linux-System vollständig aus den Quelltexten erstellt. Es existiert auch eine deutsche Version aus dem Jahr 2008. Der Prozess dauert eine ganze Weile, man lernt dabei allerdings auch enorm viel.
Links
- Der Artikel Compiler beschreibt, wie man Programme unter C# übersetzt.
- Der xkcd-Comic Universal Install Script macht sich über verschiedene Installationsmechanismen lustig.
