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.
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 ( |
|
| |
| |
RPM-Paket ( |
|
| |
| |
Slackware-Paket ( |
|
| |
|
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 |
---|---|
| Name des Pakets |
| Versionsnummer des Pakets |
| Architektur des Pakets |
| Architektur des Pakets |
| Architektur des Pakets |
| Angabe der Veröffentlichung |
| Angabe der Lizenz zum Paket |
| Benennung der Paketkategorie |
| Angabe der Quelle zum Paket |
| alternative Angabe der Quelle zum Paket |
| Zielverzeichnis, in dem das Paket gespeichert wird |
| Emailadresse des Paketmaintainers |
| Name der Pakete, die es bereitstellt |
| Name der Pakete, die das Paket benötigt |
| andere Pakete, mit denen das Paket in Konflikt steht |
| andere Pakete, die dieses Paket ersetzt |
| Flags, die an |
| keine Dokumentation in das Paket einfügen |