Alternativen
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Die Grundlagen des Kompilierung sind in Programme kompilieren beschrieben. Die Vorbereitungen wie Auflösung der Abhängigkeiten etc. gelten zum Großteil auch für die hier beschriebenen Verfahren.
Die Debian Methode¶
Bei dieser Alternative zur Ubuntu-Methode wird auf make
und checkinstall
verzichtet und stattdessen mit dh_make
(siehe auch dh make) und fakeroot
gearbeitet. Dazu müssen die beiden gleichnamigen Pakete installiert[1] sein:
dh-make
fakeroot
Befehl zum Installieren der Pakete:
sudo apt-get install dh-make fakeroot
Oder mit apturl installieren, Link: apt://dh-make,fakeroot
Der Unterschied zwischen den beiden Methoden besteht darin, dass man mit checkinstall
auch abweichende Installationsarten abfangen kann, während mit der Debian-Methode lediglich der klassischen Dreisatz aus der Standard-Methode möglich ist. Dafür eignet sich die Debian-Methode besser, wenn man sich näher mit dem validen Paketbau beschäftigen möchte, weil man mit dieser Methode die nötigen Dateien wie z.B. /debian/control erhält, die man editieren kann, um z.B. Abhängigkeiten usw. anzugeben. Valide Pakete bedeutet in diesem Zusammenhang, dass man diese Pakete auch ohne Bedenken an andere Personen weitergeben oder über das Internet veröffentlichen kann.
Konfiguration¶
Die Konfiguration über das configure-Skript ist hierbei optional, weil es später mit fakeroot
automatisch ausgeführt wird. Möchte man allerdings weitere Optionen an das Skript übergeben, dann muss man es im Vorfeld einmal durchlaufen lassen:
./configure --prefix=Pfad --enable-xyz --disable-xyz
Anschließend dh_make
ausführen, um die Debian-Paketinformationen erstellen zu lassen:
dh_make
Für den Pakettyp nimmt man in der Regel "Single Binary", bestätigt also mit
S . dh_make
erstellt dann die Regeln für fakeroot
und eine Sicherheitskopie des Quelltextverzeichnisses wird angelegt.
Sollte diese Sicherheitskopie nicht angelegt werden, kann das mit folgendem Befehl erzwungen werden:
dh_make --createorig
Kompilieren¶
Abschließend wird das configure-Skript automatisch aufgerufen (sofern nicht vorher vom Anwender durchgeführt), das Programm kompiliert und ein Debian-Paket (.deb) ein Verzeichnis oberhalb des Quelltextverzeichnisses erstellt. Im Gegenensatz zu checkinstall
wird dieses Paket von fakeroot
aber nicht automatisch installiert, deshalb wird hierbei kein sudo
[2] benötigt:
fakeroot debian/rules binary
Installation¶
Das von "fakeroot
" erstellte Paket ein Verzeichnis oberhalb vom Quelltextverzeichnis kann wie gewohnt installiert werden[3].
Zusammenfassung¶
Der klassische Dreisatz ändert sich für die Debian-Methode dahingehend:
./configure OPTIONS (optional) dh_make fakeroot debian/rules binary
Abweichende Methoden¶
Nicht alle Programme verwenden für das Kompilieren und Installieren die oben genannten Methoden. In diesem Abschnitt werden einige gängige, abweichende Methoden beschrieben.
CMake¶
Die Variante über Cross-Platform Make ist recht ähnlich zu den bereits angesprochenen Methoden und wird zum Beispiel von der KDE Community und Compiz verwendet. Hierbei übernimmt cmake
lediglich die Aufgabe des configure-Skriptes. Dazu muss das gleichnamige Paket installiert sein:[1]
cmake
Befehl zum Installieren der Pakete:
sudo apt-get install cmake
Oder mit apturl installieren, Link: apt://cmake
cmake
benötigt im Quelltextverzeichnis ein Unterverzeichnis als Arbeitsverzeichnis. Namen dieses Unterverzeichnisses, sowie weitere Optionen, die an "cmake
" übergeben werden können, kann man der Dokumentation entnehmen. Würde beispielsweise das Unterverzeichnis build vorausgesetzt werden, sähe der Ablauf so aus:
mkdir build cd build cmake ..
Kompilieren und Installieren können dann wieder so ausgeführt werden wie in der Standard- bzw. Ubuntu-Methode beschrieben mit dem Unterschied, dass auch diese im Unterverzeichnis für "cmake
" aufgerufen werden müssen:
build$ make build$ sudo make install bzw. build$ sudo checkinstall
Und optional:
build$ sudo make uninstall build$ make clean
Ausführlichere Informationen finden sich im Artikel CMake.
qmake¶
Programme, die in Qt verfasst sind, werden mit qmake
erstellt. Dazu muss eine <programmname>.pro-Datei mit den Informationen zum Kompilieren vorliegen oder erstellt werden.
Mit den Befehlen
qmake-qt4 <programmname>.pro qmake-qt4
wird dann ein Makefile für die Kompilierung erstellt, das dann wie in den anderen Verfahren beschrieben weiterverarbeitet wird. qmake
stellt insofern also nur eine "Vorstufe" zu make
dar. Nähere Angaben finden sich im Artikel Qt.
SCons¶
Mit der Verwendung des Software Construction Tools wird ganz auf ein configure-Skript oder "make
" verzichtet. Die Konfiguration wird dabei von "scons
" selber automatisch über die Datei SConstruct abgewickelt. Dazu muss das gleichnamige Paket installiert sein:[1]
scons
Befehl zum Installieren der Pakete:
sudo apt-get install scons
Oder mit apturl installieren, Link: apt://scons
Auch mit "scons
" wird im Quelltextverzeichnis gearbeitet und weitere Optionen, die man übergeben kann, können der Dokumentation entnommen werden. Kompiliert wird mit folgenden Befehl:
scons
Die Installation eines Programms mit scons
kann ebenfalls mit checkinstall
erfolgen.
Statt:
sudo scons install
also:
sudo checkinstall scons install
Um ein Quelltextverzeichnis von kompilierten Programmteilen wieder zu säubern, verfügt scons
über eine eigene Option:
scons -c
Installationsskripte¶
Programme in Skriptsprachen wie Python, Perl, Ruby usw. bieten oftmals Installationsskripte an. Solche Programme müssen nicht kompiliert werden und die Skripte übernehmen lediglich die Aufgabe, die Dateien an den richtigen Ort zu kopieren, um das Programm systemweit verfügbar zu machen. So etwas ist auch für vorkompilierte Programme zutreffend.
Eine Installation ist meistens nicht zwingend erforderlich, worauf in folgenden Abschnitten zu Programmen in Skriptsprachen und Vorkompilierten Programmen näher eingegangen wird.
Für eine komfortable Installation solcher Skripte sollte man den Vorgang mit checkinstall
abfangen. Zwei Beispiele anhand eines Shell- und eines Python-Skriptes:
Statt:
./install.sh python setup.py install
Also:
sudo checkinstall ./install.sh sudo checkinstall python setup.py install
Programme in Skriptsprache¶
Wie im Abschnitt Installationsskripte schon angesprochen, müssen Programme in Skriptsprachen eigentlich nicht kompiliert werden und eine Installation ist ebenfalls nicht zwingend. Solche Programme lassen sich ausführen, indem man im Quelltextverzeichnis ein entsprechendes Startskript aufruft.
Der Einfachheit halber sei hier empfohlen, solche Programme gar nicht erst über ein Installationsskript zu installieren, sondern sie entweder im Homeverzeichnis[4] abzulegen und einen Starter für das Programm einzurichten, oder von Hand systemweit verfügbar zu machen.
Für systemweite Verfügbarkeit kopiert man das Quelltextverzeichnis mit sudo
nach /opt und erstellt einen Softlink für das Startskript nach /usr/local/bin:
sudo ln -s /opt/programmverzeichnis/startskript /usr/local/bin
Möchte man so zwei Programmversionen parallel nutzen, also z.B. RedNotebook 🇬🇧 0.8.1 aus den Paketquellen und Version 0.9.0 in /opt muss man dafür nur den Namen des Softlinks anpassen:
sudo ln -s /opt/rednotebook-0.9.0/rednotebook/rednotebook /usr/local/bin/rednotebook-0.9.0
Fehlermeldungen¶
Sollte ein Startskript nicht funktionieren, dann sollte man als erstes die Rechte der Datei prüfen. Wenn der Softlink in /usr/local/bin nicht funktionieren sollte, dann muss man sich ein kleines Shell-Skript mit dem Aufruf des Startskriptes im Quelltextverzeichnis schreiben und dieses dann nach /usr/local/bin verlinken.
Vorkompilierte Programme¶
Es gibt einige Programme für Linux, die mit vorkompilierten, ausführbaren Dateien (Binaries) angeboten werden. Das betrifft beispielsweise die meisten Mozilla-Projekte wie Firefox, Thunderbird und Blender 3D. Diese Programme lassen sich dann über den Aufruf der ausführbaren Datei oder einem darauf verlinkten Skriptes starten. Hierbei ist die Installation dann meistens auch nicht zwingend und man kann mit diesen Programmen ebenso verfahren wie in Programme in Skriptsprache beschrieben.
Links¶
Open Build Service - Dienst zur Paketerstellung und -verwaltung
Checkinstall - Pakete bauen ohne Mehraufwand 🇩🇪 - LinuxUser, 07/2006
Programme selber kompilieren 🇩🇪 - LinuxUser, 07/2005
Sekundärsoftware aus Quellen 🇩🇪 - aus "Ubuntu GNU/Linux" von Marcus Fischer, Rheinwerk <openbook>