AA-123RF-40374525-Sorapong_Chaipanya-123RF.jpg

© Sorapong Chaipanya, 123RF

Mit Checkinstall einfache Pakete aus dem Quellcode bauen

Baumeister

,
Beim Bau von Softwarepaketen für eine bestimmte Distribution führen viele Wege zum Ziel. Checkinstall bietet vermutlich den einfachsten Weg, um selbst kompilierte Software mit der Paketverwaltung zu versöhnen.

Von Zeit zu Zeit kommt man als Linux-Anwender in die Verlegenheit, ein Paket aus dem Quellcode selbst kompilieren zu müssen. Die Gründe dafür sind unterschiedlich: Mal fehlt trotz Unmengen von Software in den Archiven der Distributionen das Gewünschte, mal wurde im Paket aus dem Repository eine benötigte Funktion nicht einkompiliert, mal hinkt die Version aus den Paketquellen um mehrere Nummern hinter der aktuellen Entwicklung her.

In diesen Fällen kommt üblicherweise der bekannte Dreisatz aus ./configure; make; make install zum Bauen des Programms aus dem Quellcode zum Zug; mit ein wenig Erfahrung lässt sich so gut wie jedes Programm aus dem Quellcode kompilieren. Allerdings umgehen Sie dabei das Paketmanagement des Systems: Der letzte Schritt des Dreisatzes installiert die fertig erstellte Software glatt daran vorbei.

Daraus resultieren gleich mehrere Nachteile: Bietet die Distribution im Lauf der Zeit eine neuere Version an, bleiben Sie als Anwender auf dem nun veralteten Eigenkompilat sitzen. Die Paketverwaltung meldet das Update nicht, Sie müssen die Software erneut selbst übersetzen. Möchten Sie die manuell installierte Software wieder entfernen, müssen Sie darauf hoffen, dass der Autor des Programms eine Uninstall-Funktion als Ziel in seiner Make-Datei verankert hat. Andernfalls gilt es, selbst Hand anzulegen und die Anwendung manuell zu entfernen.

Noch schlimmer wiegt die Situation bei selbst erstellten Bibliotheken. Installieren Sie Anwendungen, die auf solche einer händisch installierten Bibliothek aufsetzen, erkennt die Paketverwaltung die bereits erfüllte Abhängigkeit nicht. Am Ende existieren mehrere Versionen der Bibliothek auf dem System, es drohen Inkonsistenzen in der Paketverwaltung und instabile Software.

Sauber installieren

Abhilfe bietet hier das Kommandozeilenprogramm Checkinstall [1]. Es ersetzt den letzten Schritt im Linux-Dreisatz und erstellt ein rudimentäres Paket, das sich über die Paketverwaltung installieren und somit auch wieder sauber deinstallieren lässt (Abbildung 1). Die mit Checkinstall erstellten Pakete erfüllen in der Regel ihren Zweck, unterscheiden sich jedoch in einigen Punkten von einem offiziell für die Distribution oder zur Veröffentlichung im Internet erstellten Paket. Sie sollten daher mit Checkinstall nur auf dem eigenen Systemen arbeiten und die auf diesem Weg gebauten Pakete nicht im Netz verteilen.

Abbildung 1: Checkinstall hilft beim Verschnüren einer aus dem Quellcode gebauten Anwendung zu einem über die Paketverwaltung des System installierbaren Paket.

Checkinstall kann DEB-, RPM- und TGZ-Pakete erstellen. Die Vorgehensweise des Programms unterscheidet sich hauptsächlich in einem wesentlichen Punkt vom bekannten Dreisatz: Es führt zwar nach seinem Aufruf intern make install aus, protokolliert allerdings nur mittels des in Checkinstall eingebundenen Werkzeugs installwatch [2] die geänderten oder neu erstellten Ordner und Dateien, ohne dass es diese Daten im Dateisystem ablegt. Abschließend schnürt Checkinstall aus den Daten ein einfaches Paket, das sich dann mit den jeweiligen Werkzeugen der Distribution sauber installieren lässt.

"Hallo Welt" im Eigenbau

Als Beispiel zum Bauen eines Programms aus dem Quellcode und der Installation mit Checkinstall dient im Folgenden ein Debian/Ubuntu-System und das Demo-Programm Hello [3], das der GNU-Variante eines "Hello World" entspricht. Für die Installation müssen Sie zunächst das Paket checkinstall mitsamt den wichtigsten Build-Werkzeugen build-essential aus der Paketverwaltung installieren. Anschließend laden Sie den Quellcode von Hello aus dem Netz [4] und entpacken das Archiv hello_2.10.orig.tar.gz in einem temporären Verzeichnis.

Im nach dem Entpacken neu entstandenen Verzeichnis hello-2.10 führen Sie die ersten zwei Schritte des Dreisatzes ./configure und make aus. Bei Hello läuft das Configure-Skript ohne Probleme durch, bei größeren Anwendungen jedoch fehlen üblicherweise die benötigten Entwicklerpakete, sodass das Skript mit einer Fehlermeldung abbricht. Diese müssen Sie aufmerksam studieren und herauslesen, was zum Bauen fehlt (siehe Kasten "Abhängigkeiten"). Laufen einmal beide Schritte ohne Fehler durch, schnüren Sie anschließend mittels sudo checkinstall den Code zu einem Paket – in der Regel benötigt dieser Aufruf administrative Rechte.

TIPP

Möchten Sie auf einer Distribution, die nicht DEB als Paketformat verwendet, ein Debian-Paket erstellen, so lautet der Aufruf dazu checkinstall -D make install.

Abhängigkeiten

Das im Artikel genutzte Hello-World-Beispiel besitzt nur wenige Abhängigkeiten. Die paar, die das Programm beim Kompilieren braucht, installieren Sie automatisch mit build-essential. Größere Anwendungen benötigen jedoch in der Regel zahlreiche Entwicklerbibliotheken und andere Abhängigkeiten. Die Bibliotheken erkennen Sie am Namen: Die Pakete beginnen üblicherweise mit lib und enden auf -dev, also beispielsweise libgtk-3-dev oder libqt4-dev.

Installieren Sie eine neue Version eines schon in den Paketquellen verfügbaren Programms, spielen Sie mit sudo apt-get build-dep Paket die wichtigsten Abhängigkeiten ein. Das Kompilieren klappt dann in der Regel ohne Komplikationen – es sei denn, das Programm benötigt nun zusätzliche Bibliotheken oder neuere Versionen, als sie die Paketverwaltung zur Verfügung stellt. In diesem Fall müssten Sie auch diese Bibliotheken von Hand kompilieren.

Scheitert das ./configure-Skript weiterhin oder gibt es die Anwendung bisher noch gar nicht in den Paketquellen, müssen Sie die Build-Abhängigkeiten von Hand auflösen, was durchaus einiges an Know-how erfordert. Lesen Sie dazu die Installationshinweise des Entwicklers und studieren Sie die Tipps zum Bauen von Programmen im Ubuntuusers-Wiki [6]. Diese erklären an einer Reihe von Beispielen, wie Sie aus einer Fehlermeldung Rückschlüsse auf das benötigte Paket ziehen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Paketbau in Eigenregie mit Checkinstall
    Ihr Lieblingsprogramm gibt es nur als Quelltext zum Selberbauen? Kein Problem: Mit Checkinstall bekommen Sie die Software sauber ins System und auch wieder heraus.
  • Pakete bauen ohne Mehraufwand
    Selbst kompilierte Software fällt durch das Paketmanagement-Raster – oft mit unangenehmen Folgen. Hier schafft Checkinstall unkompliziert Abhilfe.
  • checkinstall
    Wer unter Linux viel aktuelle Software ausprobiert, kennt das Problem: Neueste Programmversionen existieren oft nur als tar-Archiv und lassen sich lediglich unter Klimmzügen wieder deinstallieren. Checkinstall schafft Abhilfe.
  • Wie am Schnürchen
    In nur wenigen Schritten verwandeln Sie ein Quelltextarchiv in ein vollwertiges Debian-Paket.
  • Software
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...