Vom Quellcode zum Paket

Linux-Programmpakete mit checkinstall erstellen

Viele Programme werden zuerst einmal als Sourcen verbreitet, bis sie von den Entwicklern als stabil freigegeben werden. Andere sind generell nicht binär verfügbar. Doch die Verwaltung selbst kompilierter Programme gestaltet sich auf paketorientierten Distributionen schwierig. Hier hilft checkinstall.

Lösung: Mit checkinstall werden manuell kompilierte Programme ohne viel Aufwand zum Programmpaket verarbeitet. Zur Auswahl stehen die Formate von Debian, Red Hat und Slackware. Diese können auf den meisten modernen Distributionen verwendet werden. Da die Pakete mit Versionsnummer und Abhängigkeiten versehen werden können und außerdem im Paketmanager einsehbar sind, sind sie deutlich einfacher zu handhaben als dateiweise installierte Programme.

Da checkinstall nur am Ende des Installationsprozesses eingreift, folgt man zunächst den üblichen Schritten zur Kompilierung des Programms. Hierfür gibt es einen Quasi-Standard. Nach diesem wird zuerst die Umgebung mit configure geprüft. Dann werden die Quellen mit make in Binärdateien übersetzt. Eingehende Anleitungen für diesen Vorgang finden sich zu Hauf im Netz. Als finaler Befehl und letztendlicher Installationsauslöser ist in diesem Fall make install vorgesehen. Mit diesem werden die fertigen Dateien auf ihre vorgesehenen Positionen im Betriebssystem kopiert.

Besitzt das Programm indes eigene Installationsroutinen, stellt auch dies kein Problem dar. Den zum Kopieren der Daten nötigen Befehl entnimmt man aus den mit INSTALL, README oder ähnlichen Namen versehenen Hilfsdateien im Grundverzeichnis der Sourcen. Wie im obigen Fall werden alle Befehle bis dorthin ohne Änderung ausgeführt. Gibt es nur ein einziges, kompaktes Installationsskript, so gilt dieses als letzter Befehl.

Einfache Menüführung: Die Verwendung von checkinstall stellt auch ohne Vorkenntnisse kein Problem dar
Einfache Menüführung: Die Verwendung von checkinstall stellt auch ohne Vorkenntnisse kein Problem dar

In allen Fällen fängt checkinstall den letzten Schritt ab. Hierzu stellt man dem Aufruf der Installationsroutine schlicht checkinstall voran, woraufhin sich ein einfaches, textbasiertes Menü öffnet. Hier lassen sich zuerst einmal die Eckdaten des zu erstellenden Pakets definieren: Name, Versionsnummer, Abhängigkeiten, Lizenz und diverse weitere Felder können frei belegt werden. Auch die mitgelieferte Dokumentation wird in das Paket integriert.

Ist man mit den Einstellungen zufrieden und betätigt die Return-Taste, so löst checkinstall eine Scheininstallation aus und verfolgt, welche Änderungen das Programm am System vornehmen will. Die so gewonnenen Informationen über die zu installierenden oder zu ändernden Dateien werden zu einem Paket verarbeitet. Dieses wird automatisch installiert.

Da die Paketverwaltung diesen Schritt übernimmt, muss man nicht befürchten, dass diese Dateien aus anderen Paketen überschreibt. Im Gegensatz zum make install-Vorgang fängt diese solche Fehler zuverlässig ab. Außerdem sind die so installierten Programme leicht wieder zu entfernen oder mit einer neueren Version zu ersetzen - auf einen vom Programmierer vorgesehenen make uninstall-Befehl ist man also nicht mehr angewiesen. Auch der Quellcode kann nun gelöscht werden, wenn er nicht mehr gebraucht wird.

Die Programmquellen können auch vor der Kompilierung manipuliert werden. So lassen sich etwa durch Patches angepasste Programmversionen neben den Originalpaketen installieren, indem ihr Installationsverzeichnis im configure-Schritt mit -prefix festgelegt wird. Auch versionskritische Anwendungen finden so in mehreren Varianten Platz - praktisch, wenn etwa zwei Programme nur mit unterschiedlichen WINE-Versionen kompatibel sind.

Zwar bieten die Distributionen oft auch selbst Source-Pakete an, die in etwa demselben Umfang manipulierbar sind wie die auf diesem Wege zusammengestellten. Jedoch ist man hier darauf angewiesen, dass ein Repository das Programm mit der gewünschten Versionsnummer führt, während checkinstall beispielsweise auch taufrische SVN-Versionen als Paket installieren kann.

Produkte: checkinstall kann auf allen Distributionen verwendet werden, die die Paketstandards deb, rpm oder tgz/txz nutzen. Dies trifft auf einen großen Teil der heutigen Distributionen zu, so etwa Ubuntu, Mint, Debian, OpenSuSE, Fedora, Mandriva, Slackware und viele mehr. (dre)