Checkinstall ist ein Kommandozeilenprogramm, welches das Erstellen von TGZ (Slackware), RPM- oder DEB-Paketen aus einem nicht als Paket vorliegenden Programm, kann Quellcode sein, aber auch z.B. ein schon compiliertes tar-Archiv, enorm erleichtern kann.
Homepage: http://asic-linux.com.mx/~izto/checkinstall/
Lizenz: GPL
Tips & Tricks
Wird ein DEB-Paket gebaut, so muss als Version unbedingt eine Zahl eingetragen werden, sonst führt das anschließende Eintragen ins DEB-System zu einem Fehler ("Number expected"). Als Version wird anscheinend der Name des Verzeichnisses voreingestellt, eine Änderungsmöglichkeit wird aber im normalen Ablauf angeboten.
Für Option --requires ist in der Dokumentation kein Beispiel gegeben. Wenn man ein Debian-Paket erstellt muss man die benötigten Pakete als mit Kommata getrennte Liste angeben. Hier ein Beispiel: --requires='make,gcc,bash'.
Mini-Howto
- Zu installierendes Paket fertigmachen (entpacken, evt. compilieren)
- Lautet der Befehl zur Installation z.B.
./install.sh /opt/meinpaket dann statt dessen
checkinstall ./install.sh /opt/meinpaket ausführen
Noch ein Beispiel (Kompilation eines KDE-Programmes aus dem Quellcode):
- Das Paket herunterladen
- Paket entpacken
- In einer Shell in das entstandene Verzeichnis wechseln und die folgenden Befehle absetzen:
./configure --prefix=`kde-config --prefix` make su checkinstall make install
Man beantwortet drei Fragen und schon ist das Programm als Paket installiert. checkinstall gibt am Ende auch aus, wo das Paket abgelegt wurde, so dass man es leicht auf den Fileserver kopieren kann. Wer Lust hat, kann das Binärpaket dem Programmautor schicken, evtl. stellt er es auf seiner Webseite zur Verfügung, damit andere Leute es ein wenig einfacher haben.
Manchmal kann es auch vorkommen, dass checkinstall mit obskuren Fehlern die Installation eines Paketes abbricht (zb bei sim-icq). Dies liegt oft daran, dass checkinstall neue Dateien nicht anlegen kann (weiss jemand warum?). Ein make install ohne checkinstall funktioniert oftmals ohne Probleme. Wenn man danach checkinstall aufruft, geht alles einwandfrei. Die Antwort liegt im "file translation code" von installwatch, der eine Art virtuelles Dateisystem bereitstellt, damit das bestehende nicht berührt wird. Manchmal finden Installationsroutinen die eben kopierten Dateien nicht mehr und brechen dann mit einem Fehler ab. Die Lösung liegt im Parameter `--fstrans=no', der dieses Feature abschaltet.
Nachteile
checkinstall lässt make erst mal alle Dateien in das System kopieren und schaut dabei zu. Erst dann wird das eigentliche Paket erstellt. Dabei kann es passieren, dass Dateien überschrieben werden, ohne dass man es mitbekommt. checkinstall hat also die selben Schwächen wie ein reines make install, bietet aber den Riesenvorteil, dass das Paket später sauber wieder deinstalliert werden kann.