21.3. Software selbst übersetzen und als deb-Paket einspielen

An dieser Stelle kommt das Projekt checkinstall [checkinstall] ins Spiel. Es steht unter der GPLv2 und ist über das gleichnamige Paket aus den Repositories bis Debian 9 Stretch verfügbar [Debian-Paket-checkinstall]. In Debian 10 Buster ist es nicht enthalten, da es zum Zeitpunkt des Einfrierens der Veröffentlichung nicht die erwartete Paketqualität aufwies. Man kann es aber nach Aktivieren von Backports für Debian 10 Buster in einer Version nahezu identisch zu der aus Debian 11 Bullseye nachinstallieren.

Hinweis auf dh-make-perl

Handelt es sich bei der einzuspielenden Software um Perl-Module, hilft Ihnen auch das spezialisierte Paket dh-make-perl weiter [Debian-Paket-dh-make-perl]. Wie Sie das Werkzeug verwenden, erläutert Steve Kemp in seinem lesenswerten Blogeintrag „Building Debian packages of Perl modules“ [Kemp-dh-make-perl].

checkinstall hat sich zum Ziel gesetzt, das Übersetzen von Paketen aus dem Quellcode und das direkte Erstellen von Binärpaketen miteinander zu kombinieren. Diese „frischen“ Binärpakete passen dann exklusiv zu Ihrer bestehenden Installation. Es kann neben deb-Paketen auch rpm- und tgz-Dateien für Slackware erstellen. Die einzelnen Schalter entnehmen Sie bitte Tabelle 21.1, „Schalter für die verschiedenen unterstützten Paketformate“. Benennen Sie keinen Schalter, erzeugt checkinstall automatisch ein deb-Paket.

Tabelle 21.1. Schalter für die verschiedenen unterstützten Paketformate

Paketformat Schalter

Debian-Paket (deb)

-D

-t debian

--type=debian

RPM-Paket (rpm)

-R

-t rpm

--type=rpm

Slackware-Paket (tgz)

-S

-t slackware

--type=slackware


Vereinfacht gesagt, erstellt checkinstall ein Paket direkt aus dem Quellcode und übergeht den Paketmanager dabei aber nicht. Es beobachtet den Erstellprozess und bindet alle Dateien in das neue Paket ein, die bei der Übersetzung entstehen und benötigt werden. Daher gibt es auch dafür die schöne Umschreibung „Installations-Verfolger“.

Dazu bezieht checkinstall zunächst die benötigten Quellen zum Paket. Als Quelle kommen alle Softwarearchive in Frage, so z.B. neben den regulären Debian-Paketquellen auch von den Plattformen SourceForge [SourceForge], Freecode (vormals Freshmeat) [FreeCode] und GitHub [GitHub]. Gleiches gilt für das direkte Auschecken aus dem Versionskontrollsystem des Projektes.

Zum Aufruf genügt das nachfolgende Kommando im Verzeichnis mit dem Quellcode. Es entspricht dem bereits oben genannten Aufruf von ./configure, make und make install und ist gleichzeitig die Kurzform für den Aufruf checkinstall --install=yes.

# checkinstall

Aus dem zunächst bezogenen tar.gz-Archiv baut checkinstall ein zu ihrer Installation passendes deb-Paket und installiert dieses über die Paketverwaltung. Dabei erhält das Paket die Markierung hold (siehe dazu Abschnitt 2.15, „Lokale Paketmarkierungen“).

Möchten Sie ein bestimmtes Skript zur Installation ausführen, geben Sie dieses beim Aufruf von checkinstall als zusätzlichen Parameter an. Nachfolgend heißt das Skript schlicht installationsskript.sh, kann aber von Ihnen beliebig benannt werden.

# checkinstall installationsskript.sh

Wünschen Sie hingegen keine automatische Installation, rufen Sie checkinstall mit dem Parameter --install=no auf. Das entspricht den beiden Aufrufen ./configure und make.

# checkinstall --install=no

Weitere Debian-spezifische Schalter entnehmen Sie bitte Tabelle 21.2, „Spezifische Schalter für ein Debian-Binärpaket“. Diese Schalter korrespondieren direkt mit den dazugehörigen Feldern in einem Debian-Binärpaket (siehe Abschnitt 4.1, „Konzepte und Ideen dahinter“). Schalter zur Darstellung und Ausgabe entnehmen Sie bitte der Manpage zum Programm oder über den Aufruf von:

checkinstall --help

Tabelle 21.2. Spezifische Schalter für ein Debian-Binärpaket

Schalter Bedeutung

--pkgname=name

Name des Pakets

--pkgversion=version

Versionsnummer des Pakets

-A Architektur

Architektur des Pakets

--arch Architektur

Architektur des Pakets

--pkgarch=Architektur

Architektur des Pakets

--pkgrelease=Release

Angabe der Veröffentlichung

--pkglicense=Lizenz

Angabe der Lizenz zum Paket

--pkggroup=Gruppe

Benennung der Paketkategorie

--pkgsource=Quelle

Angabe der Quelle zum Paket

--pkgaltsource=Quelle

alternative Angabe der Quelle zum Paket

--pakdir=Verzeichnis

Zielverzeichnis, in dem das Paket gespeichert wird

--maintainer=Emailadresse

Emailadresse des Paketmaintainers

--provides=Liste

Name der Pakete, die es bereitstellt

--requires=Liste

Name der Pakete, die das Paket benötigt

--conflicts=Liste

andere Pakete, mit denen das Paket in Konflikt steht

--replaces=Liste

andere Pakete, die dieses Paket ersetzt

--dpkgflags=Flags

Flags, die an dpkg zur Installation mitgegeben werden

--nodoc

keine Dokumentation in das Paket einfügen