stow - Packagemanagement für Arme
GNU stow erlaubt die Installation von Software, die nicht aus einer "richtigen" Package kommt, ohne die unsäglichen Schmerzen, die bei der Installation direkt nach /usr/local entstehen.
Auf Systemen, die dem FHS gehorchen, landet aus Distributionspackages installierte Software üblicherweise in /usr. Lokal gebaute Software wird nach /usr/local installiert. Dabei entsteht innerhalb /usr/local leicht das Problem, dass man die Übersicht darüber verliert, welche Datei zu welcher Package gehört. Das Ergebnis ist ein schwer wartbares System, das einen Update-Albtraum darstellt.
GNU stow versucht dieses Problem dadurch zu lösen, dass jede lokal gebaute Software in einen eigenen Tree unterhalb von /usr/local/stow/[packagename] installiert wird. Das Programm stow legt dann Symlinks nach /usr/local an, damit die Files in den "normalen" Pfaden gefunden werden können.
Über die Symlinks ist einfache Identifikation des Softwarepakets möglich, das für eine Datei "verantwortlich" ist. Ebenso einfach ist die Deinstallation der Symlinks, so dass man eine Software rückstandslos entsorgen kann. Insbesondere der Wechsel zwischen Versionen ist somit ohne Aufwand möglich, da einzelne Versionen unter /usr/local/stow/[packagename] installiert bleiben können, auch wenn sie gerade nicht nach /usr/local verlinked sind.
Am besten geeignet für die Installation in einem stow-Directory sind Packages, die sich für die Ausführung aus anderen Verzeichnissen kompilieren lassen als die, in die installiert wird. Packages, die autoconf/automake verwenden, erfüllen diese Anforderung im allgemeinen.
./configure --prefix /usr/local
make
make install prefix=/usr/local/stow/[packagename]
cd /usr/local/stow
stow [packagename]
Packages, deren Makefile keinen Prefix unterstützt, sollte man für die Ausführung aus /usr/local/stow/[packagename] übersetzen. Das ist zwar nicht schön, erfüllt aber in aller Regel ebenfalls den Zweck. make install sollte man mit einem Account ausführen, der nur in /usr/local/stow, nicht aber in den anderen Verzeichnissen unterhalb von /usr/local schreiben darf - oder man prüft vor der "richtigen" Installation mit make -n install, ob der Installationscode auch das beabsichtigte tut.
GNU stow eignet sich insbesondere für die "quick-and-dirty" Installation von Software, für die es sich nicht lohnt, eine "richtige" Package zu schnüren.
In /usr/local/stow/[packagename] installierte Packages kann man durch tar recht einfach von einer Maschine auf eine
andere verschieben, wenn man sich der fehlenden Features:
- Kein Dependency-Handling
- kein conffile-Handling
- keine Maintainer-Scripts
bewusst ist.
Comments
Display comments as Linear | Threaded