man which
Inhaltsverzeichnis
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
configure
für die Konfiguration ausführenmake
kompiliert den Quelltext in ausführbare Programmesudo make install
kopiert 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
coreutils
in der aktuellen Version.
Eventuell werden Fehlermeldungen angezeigt, weil einige Programme fehlen. Prüfe, ob das Paketbuild-essential
bereits 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.