Mit VerGNUegen

Quellcode, installierfertig zusammen gestellt

01.04.2000
Sei es ein in "out of the box" vorgestelltes Programm, sei es sonstige Software – im Quellcode vorliegende Programme unter Linux zu kompilieren und zu installieren ist nur selten wirklich schwierig. Da stellt sich die Frage: Wie wird eigentlich ein solches Sourcecode-Paket zusammen gestellt, damit auch alles klappt?

Ein großer Vorteil freier Software liegt darin, dass jeder die Möglichkeit zum Studium des Programmcodes hat und ihn an eigene Bedürfnisse anpassen kann. Damit sich nun aber nicht jeder, der eine freie Software installieren möchte, zwangsläufig mit den Programmquellen auseinandersetzen muss, gibt es Tools, die dem Benutzer die Anpassungsarbeit an das eigene System abnehmen.

Das Einmaleins der Installation

Software, die unter die GNU General Public Licence oder eine andere Open-Source-Lizenz fällt, wird meist in Form mehr oder weniger großer "gezippter" tar-Archive bereit gestellt. Wer ein solches Paket installieren möchte, muss es zunächst auf der eigenen Festplatte entpacken.

Als Beispiel soll hier das GIMP-Toolkit gtk+-1.2.2.tar.gz dienen:

gunzip gtk+-1.2.2.tar.gz
tar xf gtk+-1.2.2.tar

Diese zwei Schritte – der erste dekomprimiert die tar.gz-Datei zu einem reinen tar-Archiv, der zweite entpackt das dadurch erzeugte File – lassen sich mit der unter Linux gebräuchlichen tar-Version auch zu einem zusammenfassen:

tar xzf gtk+-1.2.2.tar.gz

Dabei erhält man ein Verzeichnis mit dem Namen gtk+-1.2.2, in dem sich die einzelnen Dateien und Unterverzeichnisse des Pakets befinden. Nachdem man in das soeben erzeugte Verzeichnis gewechselt ist, kann man mit der eigentlichen Arbeit beginnen.

Zunächst startet man das configure-Skript:

./configure

Dadurch passt der Anwender die Software – oder vielmehr die zur Übersetzung benötigten Makefiles – automatisch an das eigene System an. Wie ein solches configure-Skript entsteht, sehen wir etwas später.

Trat ein Fehler auf, kann dies zum Beispiel an einer Library liegen, die für die Programmgenerierung benötigt wird, jedoch nicht oder in einer veralteten Version installiert ist. Diese muss dann zunächst eingespielt werden. Wenn die Konfiguration ohne Fehlermeldung ablief, kann mit dem Kompilieren der Programmquellen begonnen werden. Nach Eingabe von

make

wird der Quellcode übersetzt. Bei großen Programmpaketen, wie dem hier als Beispiel angeführten gtk+-1.2.2, ist spätestens jetzt die Zeit für eine Teepause gekommen. Das Kompilieren dieses Pakets dauert auf einem Pentium 266 beispielsweise ganze 13 Minuten.

Ging beim Kompilieren alles glatt, müssen die neu erzeugten Dateien an die "richtige" Stelle kopiert werden. Für ausführbare Binärdateien kann dies zum Beispiel das Verzeichnis /usr/local/bin sein. Man verschafft sich also root-Rechte und startet den Kopiervorgang:

su
make install

Jetzt sollte jeder "normale" User das neu installierte Programm durch Eingabe des entsprechenden Namens starten können. Da es sich bei unserem Beispiel um eine Library handelt, können wir allerdings gar nichts ausführen.

Möchte man ein neues Paket auf einem Rechner installieren, auf dem man selbst keine root-Rechte besitzt, entfällt natürlich der letzte Schritt, und man muss das Programm direkt aus dem entsprechenden Unterverzeichnis heraus aufrufen (oder z.B. einen symbolischen Link setzen). Der Kasten "Installationsdreiklang" fasst alle Schritte noch einmal kurz zusammen.

Installationsdreiklang

Konfiguration:

./configure

Übersetzung:

make

Für systemweite Installationen als root:

su
make install

Jetzt wissen wir also, wie man als Anwender einen Sourcecode übersetzt und zum "Laufen" bringt. Was aber ist alles nötig, um solch ein Paket zu erstellen?

Wo soll das nochmal enden?

Damit die Installation wirklich so reibungslos wie oben beschrieben funktioniert, müssen verständlicherweise einige Konventionen beim Erstellen der Quellpakete beachtet werden. Jede GNU-Software wird deshalb (normalerweise) in einer festgelegten Verzeichnisstruktur abgelegt und mit ein paar Standarddateien versehen. Auch wenn man sein Programm unter einer anderen Lizenz freigeben will, bietet sich eine entsprechende Strukturierung an. Tabelle 1 zeigt, wie diese aussehen sollte. Die angegebenen Verzeichnisse befinden sich alle unterhalb des eigentlichen Projektverzeichnisses. Es müssen keineswegs immer sämtliche Directories verwendet werden – einige sind optional.

Tabelle 1: Verzeichnisstruktur eines (GNU-)Programmpakets

src Hier liegt der eigentliche zu kompilierende Sourcecode. Bei komplexen Programmen können und sollten auch weitere Unterverzeichnisse eingerichtet werden.
lib In diesem Verzeichnis befinden sich Sourcen oder Tools, die für die Portierung des Programms notwendig sind, beispielsweise Implementierungen von Systemaufrufen, die nicht auf jedem System zur Verfügung stehen.
doc Keine gute Software ohne gute Dokumentation. Deshalb wird hier alles, was das Programmpaket beschreibt, zusammen gefasst. Wie die Dokumentation aussieht, bleibt jedem selbst überlassen. Bei GPL-Software sollte aber bevorzugt Texinfo [5] eingesetzt werden.
m4 Hier liegen neue m4-Makros. Näheres zu Makros erfahren Sie aus der autoconf-Dokumentation [2].
po In diesem Verzeichnis sollten die in verschiedene (natürliche) Sprachen (Deutsch, Englisch, Japanisch usw.) übersetzten Textmeldungen liegen.
intl Hier wird Quellcode für die Internationalisierung des Programmpakets abgelegt.

Bei den in Tabelle 2 aufgeführten Dateien handelt es sich um allgemeine Dokumentation, die auf jeden Fall im Projektverzeichnis vorhanden sein muss. Für jede dieser Dateien ein Beispiel abzudrucken würde an dieser Stelle jedoch den Platz sprengen. Aber da sie in den verschiedenen GNU-Software-Paketen ohnehin enthalten sind, werfen Sie doch einfach bei Ihrer nächsten Kompilieraktion einen Blick darauf!

Tabelle 2: Dokumentationsdateien

README Diese Datei sollte jeder, der das Paket installieren möchte, als Allererstes lesen. Hierin wird das vorliegende Programm kurz beschrieben. Außerdem enthält sie ggf. Verweise auf andere Dokumentationsdateien.
INSTALL Die INSTALL-Datei wird automatisch von automake erzeugt. Sie richtet sich vor allem an Diejenigen, die noch nie eine GNU-Software installiert haben. Wenn man als Programmautor etwas Außergewöhnliches mitzuteilen hat, sollte man dies deshalb besser in der README-Datei tun.
AUTHORS Diese Datei enthält die Namen aller Autoren, die am vorliegenden Programmpaket mitgearbeitet haben. Außerdem sollte erkennbar sein, von wem welche Programmteile stammen und ob diese vom Autor erstellt oder nur modifiziert wurden.
THANKS Die "Danksagungsdatei" besteht normalerweise aus einer zweispaltigen Liste aller am Projekt beteiligten Personen: links der Name, rechts die E-Mail-Adresse. Am einfachsten sortiert man sie alphabetisch, ohne eine Gewichtung bestimmter Mitarbeiter vorzunehmen.
NEWS Die wichtigsten neuen Eigenschaften des Programmpakets. Alte Auflistungen sollten nicht gelöscht werden, damit man die Neuerungen zwischen beliebigen Programmversionen jederzeit nachvollziehen kann.
ChangeLog Hier werden alle Veränderungen am Sourcecode dokumentiert. Wie so etwas im Detail aussieht, schaut man sich am besten an einer Beispieldatei an. Für jeden "Arbeitstag" sollte es eine kleine Gruppe von Änderungsnotizen geben.
COPYING COPYING enthält die "General Public License". Diese muss aber nicht etwa selbst abgetippt werden, sondern wird von automake automatisch erstellt.

Abbildung 1 zeigt ein Sourcecode-Paket mit einigen der eben beschriebenen Verzeichnisse und Dateien.

Abbildung 1: Eine typische Datei- und Verzeichnisstruktur

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Related content

  • GUI-Programme erstellen mit Glade
    Die Entwicklung auf GTK+ basierender, grafischer Benutzeroberflächen – ein schwieriges, umständliches Unterfangen? Der GUI-Builder Glade widerlegt solche Behauptungen.
  • Windows-Freigaben nutzen
    Linux-Rechner dienen mit Samba nicht nur als Datei-Server für Windows-Rechner, sondern können auf diese Daten wie auch auf echte Windows-Freigaben selbst zugreifen – und das sogar richtig komfortabel.
  • X Test Suite wiederbelebt

    Einige X11-Entwickler haben die X Test Suite (XTS) überarbeitet und in einem Online-Repository veröffentlicht.
  • deskTOPia: Bashish und Adventure Shell
    Themes gibt es nicht nur für grafische Benutzeroberflächen, und wem der Kick bei der Shell fehlt, kann sich auf das Abenteuer "Adventure Shell" einlassen.
  • Proof of Concept: Wine für 64-Bit-Programme
    Dass die freie Laufzeitumgebung Wine in diesem Jahr die Version 1.0 geschafft hat, ist ein Meilenstein. Entwickler Maarten Lankhorst hat nun - zumindest auf dem experimentellen Feld - eine weitere Wegmarke gesetzt und das erste 64-Bit-Windows-Programm zum Laufen gebracht.
Kommentare

Infos zur Publikation

title_2014_08

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 0 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...
openSUSE 13.1 - Login-Problem wg. Fehler im Intel-Grafiktreiber?
Thomas Kallay, 03.07.2014 20:26, 8 Antworten
Hallo Linux-Community, habe hier ein sogenanntes Hybrid-Notebook laufen, mit einer Intel-HD460...
Fernwartung für Linux?
Alfred Böllmann, 20.06.2014 15:30, 7 Antworten
Hi liebe Linux-Freunde, bin beim klassischen Probleme googeln auf www.expertiger.de gestoßen, ei...