Linux Bibel online

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz.

Change language by Google translator: ...

Früher, bevor es die Software-Pakete gab mit denen man sich heute Software ganz einfach per Klick installiert (siehe auch Paket-Verwaltung) musste man sich unter Linux weitere Software selbst kompilieren. Software, Treiber, Spiele, Firmware, ... entsteht nicht so einfach aus dem Nichts, der Entwickler nutzt dazu einen reinen Text-Editor und setzt den Code der Software aus reinem Text zusammen. Meist besteht der Code - den man auch Quellcode nennt aus mehreren Dateien und bei entsprechend großer Software aus Millionen von Zeilen. Mit diesem Code kann man als Nutzer jedoch nicht sonderlich viel anfangen, man könnte ihn höchstens lesen - aber nicht das damit tun was man mit Software machen möchte, man muss diesen Quellcode erst in ein funktionierendes Programm umwandeln - diesen Vorgang nennt man Kompilieren oder auch Übersetzen.
Wie schon beschrieben - heute hat man seine Software-Pakete, in diesem Fall erledigt der jeweilige Distributor (der Halter der Distribution) mit seinen Maintainern (Ersteller der Software-Pakete) dies für den Nutzer, sie übersetzen den Quellcode in funktionierende Software und packen diese in ein für die Distribution angepasstes Paket.

Warum gibt es nicht jede Software für jede Distribution? Warum kommt man als Nutzer selbst heute noch manchmal in die Situation sich Software kompilieren zu müssen? Warum kompiliert nicht gleich der Entwickler der Software diese und packt diese in für die Distributionen passende Pakete? Stellen Sie sich vor Sie wären Entwickler einer Software und wollen nur die Pakete für die Distribution Debian GNU/Linux erstellen, Sie müssten zunächst Ihre Software entwickeln und danach für jede Architektur die Debian bietet ein Paket packen, dies wären dann alleine für Debian dreizehn einzelne Pakete was schon einiges an Arbeit erfordert und dann gibt es noch unzählige weitere Distributionen - selbst wenn man nur für die großen Distributionen die Software kompiliert und die Pakete erstellt. Ein Ding der Unmöglichkeit.

Unter den großen Distributionen wie etwa Debian, Open SuSE, Fedora und so weiter und so fort findet man nahezu jegliche Software in der jeweiligen Paket-Verwaltung, warum kommt man nun doch hin und wieder nicht um das Kompilieren herum? Weil es eben nicht jede Software vorbereitet zur Installation gibt - sehen Sie sich etwa einfach einmal ein wenig auf Sourceforge um und Sie werden sehen das selbst Debian mit seinen über 50.000 Paketen nicht an den Umfang von freier Software heran kommt. Des weiteren hätte man hin und wieder einfach gerne eine aktuellere Version einer Software als die Distribution sie gerade bietet, es gibt viele Gründe sich Software selbst aus dem Quellcode zu übersetzen - und dies ist gar nicht einmal so schwierig.

Vorbereitungen

Als erstes lädt man sich den jeweiligen Quellcode der Software natürlich herunter und entpackt das gespeicherte Archiv. Zum Kompilieren von Software benötigt man zu Beginn einige wichtige Pakete die man sich über die Paket-Verwaltung installiert, welche dies sind kommt auf den jeweiligen Quellcode an, meist handelt es sich um C-Software, also um Quelltext der in der Programmiersprache "C" geschrieben wurde oder auch um Qt - Software wie man sie vor allem unter KDE findet. Um welche Pakete es sich dann wirklich handelt werden wir etwas später erfahren, für C-Programme sind dies auf jeden Fall einmal die Pakete "gcc", "make" und "build-essential", für Qt-Software "cmake".

Die Vorgehensweise

Man hat die gewünschte Software herunter geladen und entpackt und die grundlegende Software zum kompilieren über die Paket-Verwaltung installiert, wie geht es nun weiter? Man öffnet als erstes natürlich das Verzeichnis in dem der Quellcode nun liegt, hier finden sich oft eine Menge an Dateien und weiteren Verzeichnissen. Was wir gleich zu Beginn benötigen sind einige simple Text-Dateien die sich in nahezu allen Quelltext-Verzeichnissen finden - README, INSTALL oder BUILD - meist sind die für uns wichtigen Dateien groß geschrieben und daher einfach zu erkennen. Diese Dateien benötigen wir das sie für uns wichtige Informationen bieten, sie beinhalten etwa Software welche installiert sein muss um die Anwendung überhaupt kompilieren zu können. Man sieht sich also die vorhandenen Dateien an und installiert benötigte Abhängigkeiten ganz einfach wieder über die Paket-Verwaltung, man gibt einfach der Reihe nach die angegebenen Begriffe ein und lässt danach suchen - die benötigten Pakete haben unter auf Debian basierenden Distributionen meist ganz einfach ein "-dev" für "Develop" am Ende.

Wie man nun weiter vor geht hängt davon ab um welchen Quellcode es sich handelt:

C-Quellcode

Am häufigsten wird man es mit Quellcode in der Sprache "C" zu tun haben, in diesem Fall nutzen wir den Compiler "gcc", also den GNU C Compiler. Man öffnet ein Terminal oder wechselt auf diesem direkt in das Haupt-Verzeichnis des Quellcodes und startet als normaler Nutzer (nicht als Administrator "root") den Befehl:

./configure --help

Dieser Befehl liefert uns möglicherweise weitere Optionen, Möglichkeiten und Hilfen die uns beim kompilieren des Codes helfen. Man sieht sich die Ausgabe an und behält sich gewünschte Optionen im Gedächtnis die wir dem nächsten Befehl anfügen (im Normal-Fall ist dies jedoch nur selten nötig. Ist dies geschehen starten wir wieder als normaler Nutzer den Befehl:

./configure

Dieser Befehl prüft ob alles nötige, der Compiler, nötige Abhängigkeiten und Bibliotheken auf dem System installiert sind, dies kann einige Sekunden dauern, warten Sie einfach ab und sehen am Ende der Ausgabe ob Sie Meldungen finden die mit "ERROR" beginnen, in diesem Fall gibt es also weitere Software-Pakete die es zu installieren gibt. In diesem Fall lesen Sie unter APT-File weiter. Finden sich keine Fehler-Meldungen startet man wieder als normaler Nutzer den Befehl:

make

Der Befehl ist der tatsächlich wichtige, er übersetzt den Quellcode in funktionierende Software. Dies kann je nach Umfang der Software (also der Größe des Quellcodes) einige einige Zeit dauern, warten Sie einfach ab bis der Vorgang abgeschlossen wurde und sehen nun wieder nach ob es Fehler-Meldungen gibt, sollte dies so sein finden sich auch diese wieder am Ende der Ausgabe. Gibt es solche Fehler-Meldungen gilt es wieder die oben angegebenen Dateien zu öffnen - Sie haben eine nötige Abhängigkeit zu installieren vergessen, starten Sie nach deren Installation die Befehle:

make clean make

Die Übersetzung wird also neu gestartet. Wurde die Übersetzung abgeschlossen - natürlich ohne Fehlermeldungen müssen wir die erstellte Software nur noch an die richtige Stelle im System unterbringen, dies erledigt folgender Befehl der in diesem Fall natürlich als Administrator, also als Nutzer "root" gestartet wird:

make install

Qt-Quellcode

Für Software die im Qt-Quellcode - also meist für KDE erstellt wurde nutzt man ganz einfach den "CMake"-Kompiler. Der Vorgang ist um einiges einfacher. Wieder öffnet man die genannten Dateien um zu sehen welche Abhängigkeiten nötig sind und installiert diese. Ist dies abgeschlossen öffnet man im Quellcode-Verzeichnis (dies ist das Verzeichnis in dem die Datei "CMakeLists.txt" liegt, meist "src")ein Terminal oder navigiert in dieses, hier startet man als normaler Nutzer den Befehl:

cmake ..

Der Befehl beginnt mit dem Übersetzen des Quellcodes in lauffähige Software und bricht bei Fehlermeldungen ab mit den nötigen Abhängigkeiten die es zu installieren gilt. Ist dies geschehen startet man den Befehl erneut. Auch hier hilft bei der Suche nach den nötigen Paketen APT-File. Ist die Übersetzung abgeschlossen gilt es die erstellte Datei nur noch wenn gewünscht in das System zu verschieben - etwa nach "/bin".

APT-File

Nicht immer wird bei Fehlermeldungen auch ein entsprechendes Paket oder nötige Software angezeigt, sondern auch nur in einzelne Dateien die etwa die Datei-Endung ".so" besitzen. In diesem Fall nutzt man am einfachsten das keine Werkzeug APT-File, Sie installieren die Software ganz einfach über die Paket-Verwaltung durch das Paket "apt-file". Das kleine Werkzeug sucht nach Dateien innerhalb von Paketen auch wenn diese nicht installiert sind. Nach der Installation gilt es die Software mit den nötigen Informationen zu füllen, dies erledigt man als Nutzer "root" durch den Befehl:

apt-file update

Ist der Vorgang abgeschlossen lässt es sich nach den benötigten Dateien suchen, als kleines Beispiel möchte ich nach der Datei "dateiname.so" suchen:

apt-file search dateiname.so

Als Ausgabe erhält man alle Pakete die die genannte Datei enthalten, sind dies mehrere sieht man sich die oben genannten Dateien an und sucht nach ähnlichen Paket-Namen.

Checkinstall - die Hilfe

Kompiliert man C-Quellcode und installiert diesen weiß die Paket-Verwaltung davon gar nichts, man müsste etwa zu Deinstallation in das Verzeichnis der Software wechseln und das Deinstallieren von dort anstoßen, viel einfacher wäre es doch wenn man aus dem kompilierten Quelltext gleich einfach ein passendes Paket erstellt das sich dann ganz einfach über die Paket-Verwaltung installieren und auch wieder deinstallieren lässt. Hier hilft die Software "Checkinstall" die Sie ebenfalls ganz einfach über die Paket-Verwaltung durch das Paket "checkinstall" installieren können. Man nutzt nun statt der angegebenen Befehle:

./configure make checkinstall

Der Befehl erstellt im übergeordneten Verzeichnis ein Paket der Distribution entsprechend das sich nun ganz einfach über die Paket-Verwaltung installieren lässt. Die Nachfragen die die Software beim Erstellen stellt kann man problemlos alle ganz einfach mit der Eingabe-Taste bestätigen.

Suche Nach oben Startseite Mail an den Autor Links rund um Linux

SiteLock