Häufig ist es ja so, dass eine weniger bekannte, quelloffene Software oder die allerneuste Version einer Bibliothek nur als Quellpaket vorliegt und nicht über die Paketverwaltung der gerade eingesetzten Linux-Distribution installierbar ist. An sich ist dies kein Problem, da die meisten Quellpakete ein make install oder ähnliches kennen, womit die erfolgreich kompilierte Software systemweit installiert werden kann. Doch was macht man, wenn man die Software wieder deinstallieren will? Meistens ist es nämlich so, dass es make uninstall gerade nicht gibt. Die Frage, die sich stellt, ist also die, wie installiert man Quellpakete richtig, so dass sie wieder deinstalliert werden können?
Die Lösung des Problems ist genauso einfach wie banal: Man erstellt ein Pakte für die Paketverwaltung. Denn diese kennt sehr ausgefeilte Algorithmen, um nicht nur Abhängigkeiten zwischen den Pakten aufzulösen und somit die Systemstabilität zu gewähren, sondern eben auch die Möglichkeit, ein Paket vollständig wieder zu deinistallieren. Das Problem dabei ist nur, dass die Erstellung eines echten Binärpakets in der Regel nicht einfach ist, obwohl es die zugrunde liegende Idee und Funktionsweise eigentlich ist. An dieser Stelle setzen Werkzeuge wie checkinstall oder der Debian Package Creator an, welche zwar die Standardwerkzeuge zum Paketbau nicht ersetzen, sich aber die Tatsache zu Nutze machen, dass ein Paket für den Hausgebrauch weder alle Besonderheiten der Paketverwaltung unterstützen noch den strengen Qualitätsrichtlinien der Distributionen entsprechen muss. (Anmerkung: checkinstall ist das einzige Tool, dass ich in Ubuntu Universe gefunden habe. In Debian Universe solte es auch enthalten sein.)
Das Prinzip dieser Programme ist denkbar einfach und das macht sie so nützlich. ZUnächst konfiguriert und kompiliert man das Programm wie gehabt, z.B. per ./configure und make (Je nach Buildsystem natürlich). Anstatt dann aber das Paket durch Aufruf von make install oder install.sh direkt zu installieren, lässt man die Installation nur unter Aufsicht laufen. Das heißt, man beauftragt das Paketerzeugungsprogramm damit, die Installation anzustoßen. Dabei überwacht das Programm zum Beispiel via installwatch alle Änderungen, die durch den gestarteten Prozess am Dateisystem vorgenommen werden, erzeugt anschließend daraus ein Binärpaket und installiert es gleich über die Paketverwaltung. Dies hat mehrere Vorteile:
Die Verwendung von checkinstall ist fast schon trivial. Lautet das Installationskommande make install, wird es so aufgerufen, um ein Debianpaket zu schnüren:
$ checkinstall -D make install.
Dabei können verschiedene Parameter wie die Paketbeschreibung oder der Maintainer über Parameter mitgegeben werden. Alternativ werden sie vom Programm während der Laufzeit abgefragt und können überschrieben werden. Weitere Parameter existieren, um Dateien wiederherzustellen, die während dem Paketschnüren überschrieben wurden oder um das Paket in einem Quasi-chroot zu bauen, so dass die Systemordner dabei nicht verändert werden. Bei beiden Parametern kann es aber relativ häufig passieren, dass das Installationsskript mit ungewöhnlichen Fehlern abbricht und somit gar kein Paket erzeugt werden kann.
Insgesamt unterscheidet sich das Vorgehen also kaum von der üblichen Installation eines Quellpakets. Der kleine Mehraufwand, der entsteht, stellt allerdings sicher, dass das Entwicklungssystem dank seiner Paketverwaltung in einem konsistenten Zustand bleibt und das Quellpaket wieder rückstandslos deinstalliert werden kann. Neben checkinstall, dass Pakete für andere Distributionen erstellen kann, existieren noch weitere Programme, welche den Prozess in einer X11-Anwendung abbilden. Doch für einen echten Code Monkey dürfte die klassische Konsole allemal schneller sein.