Quellpakete sauber installieren

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 man Quellpakete richtig installiert, so dass sie auch wieder deinstalliert werden können?

Die Lösung des Problems ist genauso einfach wie komplex: Man erstellt ein Paket 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 wieder vollständig zu deinistallieren. Das Problem dabei ist nur, dass die Erstellung eines echten Binärpakets in der Regel nicht einfach (im Sinne von in 10 Minuten erlernbar) 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 sollte es demnach 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 unter elterlicher Aufsicht laufen. Das heißt, man beauftragt das Paketbauprogramm 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 daraus ein Binärpaket und installiert es gleich über die Paketverwaltung. Dies hat mehrere Vorteile:

  1. Das Binärpaket kann wiederverwendet werden, die Anwendung muss bei Neuinstallation nicht neu kompiliert werden. Somit kann unter Umständen viel Zeit gespart werden.
  2. Das Paket kann - sofern es ordentlich erstellt wurde - an Upstream gemeldet oder anderen Benutzern zur Verfügung gestellt werden, beispielsweise auf http://www.getdeb.org.
  3. Es kann eine vollständige Deinstallation mit den Standardwerkzeugen der Paketverwaltung durchgeführt werden. Unter Debian und Derivaten zum Beispiel durch Aufruf von apt-get remove paketname.

Die Verwendung von checkinstall ist fast schon trivial. Lautet das Installationskommando make install, wird es als checkinstall -D make install aufgerufen, um ein Debianpaket zu schnüren.

checkinstall bei der Arbeit

Dabei können verschiedene Parameter wie die Paketbeschreibung oder der Maintainer in Form von Parameter mitgegeben werden. Alternativ werden sie vom Programm während der Laufzeit abgefragt und können überschrieben werden. Zusätzliche 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 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 dass installierte Quellpakete wieder rückstandslos entfernt werden können. 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.


attachments

imageappend Append an Image
>