|
|
Aus dem Alltag eines Sysadmin: CheckinstallLocker zurückrudernCharly Kühnast |
Software, die als Sourcecode-Tarball verteilt wird, installiert man immer auf gleiche Weise: »README« und »INSTALL« lesen, danach die Beschwörungsformel »./configure; make; make install« sprechen - läuft. Leider erwische ich nicht immer die Software, die ich gesucht hatte. (Es sollte mich wundern, wenn ich da der Einzige wäre.) Dann will ich das Zeug sauber wieder loswerden. Nur wohin hat das leichtfertige »make install« die Binaries verkleckert? Und warum hat der Programmentwickler wie so oft kein Uninstall im Makefile vorgesehen?
Statt die Software mühsam von Hand von der Platte kratzen, verfolge ich mit Hilfe des kleinen Werkzeugs Installwatch[1], welche Komponenten »make install« an welche Stelle ins Filesystem wirft. Das ist einerseits ganz praktisch, andererseits muss ich sie bei Nichtgefallen selbst löschen.
Checkinstall[2] basiert auf Installwatch und geht den entscheidenden Schritt weiter. Der Unterschied ist, dass Checkinstall nicht nur verfolgt, wo die Programme landen, sondern sie auf dem Weg dorthin abfängt und sie zu Paketen schnürt - wahlweise zu RPM- oder DEB-Paketen, auch Slackwares TGZ ist mit im Boot. Ein so angefertigtes Päckchen installiere ich dann mit den Bordmitteln der jeweiligen Distribution (»rpm«, »dpkg« ...). Und wenn's mir mal reicht, entferne ich es auf gleichem Weg wieder rückstandsfrei.
Ich ziehe mir zum Ausprobieren mal eine Software, die sich klassisch übersetzen und installieren lässt: DNRD, einen DNS-Proxy[3]. Ich entpacke den Tarball wie gewohnt, wechsle in das so entstandene Verzeichnis »dnrd-2.13« und starte:
./configure make
Statt »make install« hat jetzt Checkinstall seinen großen Auftritt:
checkinstall --type=rpm
Checkinstall fragt noch kurz nach, ob es die Dokumentation in »/usr/doc/« ablegen soll - na klar! - und führt dann »make install« aus. Dabei fängt es die involvierten Filesystem-Kommandos »cp« und »mv« ab und baut stattdessen aus dem Diebesgut ein RPM-Paket. Das installiere ich und wenn ich DNRD eines Tages wieder loswerden will, erledigt ich das mit »rpm --erase Paketname«.
Was aber, wenn der Zauberspruch nicht »make install«, sondern beispielsweise »make all« lautet? Dann hängt man ihn einfach an den Checkinstall-Aufruf an:
checkinstall --type=rpm make all
Da ich auf Checkinstalls Nachfragen bezüglich der »doc«-Verzeichnisse fast immer zustimmend reagiere, gebe ich dem Tool meistens noch den Parameter »--default« mit. Checkinstall verzichtet dann freundlicherweise darauf, mich nach Sonderwünschen zu fragen.
Slackware-Nutzer seien noch vor einem kleinen Fallstrick gewarnt: Wer eine einigermaßen aktuelle Slackware (8.1 oder jünger) einsetzt, muss den Parameter »--newslack« setzen, sonst erzeugt Checkinstall Pakete in einem Paketformat aus dem Pleistozän. (jk)
Infos |
[1] Installwatch: [http://asic-linux.com.mx/~izto/installwatch.html] [2] Checkinstall: [http://checkinstall.izto.org] [3] DNRD: [http://dnrd.sourceforge.net] |