Stow ist ein kleines Programm (eigentlich nur ein Perl-Script), welches die Installationen in /usr/local verwalten soll.
Homepage: http://www.gnu.org/software/stow/
Lizenz: GPL
Wer braucht Stow
Wenn du nur paketierte Software installierst oder Software (wie z.B. bei kommerzieller Software üblich), die sich vollautomatisch ins System integriert, wirst Du stow nicht brauchen. Wer allerdings selbst Software kompilieren und diese ins System integrieren will, für den ist Stow gedacht. (Siehe auch: SourceCodeKompilieren)
Warum überhaupt Stow
Der normale Kompilier- und Installationsvorgang läuft meist wie folgt ab:
./configure make make install
Hierbei landet die Software meistens direkt unter /usr/local. Das ist zwar alles richtig und funktioniert auch prächtig, allerdings wird man unter Umständen Probleme bekommen, wenn man die Software wieder loswerden oder updaten möchte. Einige Makefiles bieten zwar ein "make uninstall" an, aber wer will schon seine Source-Verzeichnisse nur für die De-Installation behalten?
Was macht Stow?
Bei Stow installiert man die Programme nicht direkt dorthin, wo sie eigentlich hingehören, sondern ins Unterverzeichnis "stow". Wenn man z.B. nmap mit stow nach /usr/local installieren möchte, installiert man es nach /usr/local/stow/nmap-x.xx. Dann führt man stow aus, welches die Symlinks nach /usr/local anlegt.
Wenn man nmap jetzt wieder loswerden möchte, geht das ganz einfach: Man löscht zuerst die Symlinks mit Hilfe von Stow und dann das nmap-verzeichniss in /usr/local/stow
Praxis
Wenn die Theorie soweit klar ist, ein kleines Praxisbeispiel:
Sources laden und entpacken
wget http://download.insecure.org/nmap/dist/nmap-3.28.tar.bz2 tar xvfj nmap-3.28.tar.bz2
Sources kompilieren und nach /usr/local/stow installieren (make install als root!)
cd nmap-3.28 ./configure --prefix=/usr/local/stow/nmap-3.28 make make install
Der Parameter --prefix bewirkt, dass später im Makefile dies als Installationwurzelspfad drinnen steht. Wurzel deshalb, weil unterhalb lib/ bin/ usw. Verzeichnisse entstehen.
Mit Stow die Symlinks erstellen
cd /usr/local/stow stow nmap-3.28 ldconfig # Notwendig, um neue Librarys im System zu registrieren
Der Aufruf von stow muss in dem Verzeichnis /usr/local/stow erfolgen.
Und wieder loswerden
cd /usr/local/stow stow -D nmap-3.28 rm -rf nmap-3.28
Wieder das stow-VZ.
Optionen von Stow
-n, --no
Führe keine Aktionen aus, die das Dateisystem beeinflussen, zeigt nur an, was passieren würde. Da keine tatsächliche Installation durchgeführt wird, könnte stow -n Konflikte anzeigen, die bei einer richtigen Installation nicht auftreten würden (Siehe "Conflicts" im Info-Manual) aber es kann über Konflikte informieren, die auftreten könnten.
-c, --conflicts
Nicht sofort abbrechen, wenn ein Konflikt auftritt. Diese Option ähnelt -n und wird genutzt, um nach allen Konflikten zu suchen, die bei einer Stow-Operation auftreten könnten. Wie bei -n können hier falsche Konflikte angezeigt werden. (Siehe "Conflicts" im Info-Manual)
-d DIR, --dir=DIR
Setzt das Stow-Verzeichnis auf DIR statt auf das aktuelle Verzeichnis. Dies hat auch den Effekt, dass das Standard-Zielverzeichnis zum Unterverzeichnis von DIR wird.
-t DIR, --target=DIR
Setzt das Zielverzeichnis auf DIR statt des Unterverzeichnisses von Stow.
-v, --verbose[=N]
Gibt detaillierte Informationen, die den Vorgang von Stow protokollieren, auf dem Standard-Fehlerkanal aus. Die Detail-Stufen sind 0, 1, 2 und 3; 0 ist der Standardwert. Benutzen Sie -v oder --verbose, um die Detail-Stufe um eins zu erhöhen, --verbose=N setzt es auf N.
-D, --delete
- Löscht ein Paket, das zuvor installiert wurde, aus dem Zielverzeichnis.
-R, --restow
Überholt Pakete (restow) (zuerst unstow, dann wieder stow). Diese Option ist nützlich, um symlinks nach einem Paket-Update zu aktualisieren.
-V, --version
- Zeigt die Versionsnummer. (Diese Aktion führt keine weitere Aktion durch)
-h, --help
Zeigt die stow-Befehls-Syntax an. (Diese Aktion führt keine weitere Aktion durch)
Erweiterungen zu dieser Anleitung
...sind erwünscht!
Tipps & Tricks
Man kann (X)Stow auch mit sich selbst in /usr/local installieren. Eine Anleitung hierzu findet in der Manpage von XStow.
Ähnliche Projekte
XStow ist ein in C++ geschriebenes Stow, welches auch einige zusätzliche Features mitbringt, die allerdings allesamt die Kompatibilität mit GNU Stow brechen, wenn man sie benutzt. Trotz des X hat XStow nichts mit einer grafischen Oberfläche zu tun.