Files
2026-10-31 19:09:32 +01:00

3.0 KiB
Raw Permalink Blame History

GNU Stow – Dateien mit Symlinks verwalten

GNU Stow verwaltet Verzeichnisbäume, indem es symbolische Links (Symlinks) zu deren Dateien und Unterverzeichnissen anlegt oder entfernt. Ein häufiger Anwendungsfall ist die zentrale Verwaltung von Dotfiles und Konfigurationsdateien.

Stow führt dabei keine Installationsskripte aus und erzeugt keine Konfigurationsdateien aus Vorlagen: Seine Aufgabe ist die Verwaltung der Symlinks.

Grundidee: Paketstruktur spiegelt das Ziel

Jede Unterstruktur unterhalb des Stow-Verzeichnisses ist ein „Paket“. Die Verzeichnisse und Dateien darin entsprechen den Pfaden, die im Zielverzeichnis entstehen sollen.

~/dotfiles/
├── zsh/
│   ├── .zshrc
│   └── .config/
│       └── zsh/
│           └── aliases
└── git/
    └── .gitconfig

Beim Stowen von zsh mit ~ als Ziel werden zum Beispiel ~/.zshrc und ~/.config/zsh/aliases verlinkt.

Pakete verknüpfen und entfernen

Mit explizitem Stow- und Zielverzeichnis sind die Befehle unabhängig vom aktuellen Arbeitsverzeichnis verständlich:

# Erst gefahrlos prüfen, was Stow tun würde
stow --simulate --verbose --dir="$HOME/dotfiles" --target="$HOME" zsh

# Symlinks anlegen
stow --dir="$HOME/dotfiles" --target="$HOME" zsh

# Symlinks dieses Pakets wieder entfernen
stow --delete --dir="$HOME/dotfiles" --target="$HOME" zsh

# Paket entfernen und anschließend erneut verknüpfen
stow --restow --dir="$HOME/dotfiles" --target="$HOME" zsh

Die Kurzformen für häufige Optionen sind -n (simulieren), -v (Ausgabe), -d (Stow-Verzeichnis), -t (Zielverzeichnis), -D (entfernen) und -R (erneut anwenden).

Typischer Dotfiles-Workflow

  1. Konfigurationen in einem versionierten Verzeichnis wie ~/dotfiles organisieren.
  2. Pro Gruppe oder Programm ein Paketverzeichnis anlegen, zum Beispiel zsh, git oder hypr.
  3. Die Paketstruktur so aufbauen, dass sie die gewünschten Pfade relativ zum Home-Verzeichnis abbildet.
  4. Mit stow -n -v ... zunächst prüfen, welche Links entstehen würden.
  5. Das Paket mit Stow verknüpfen und die Links bei Bedarf mit stow -D ... wieder entfernen.

Konflikte und wichtige Hinweise

  • Stow überschreibt vorhandene, nicht von Stow verwaltete Dateien nicht einfach. Bei Konflikten bricht es ab und meldet das Problem.
  • Vorhandene Konfigurationen erst sichern oder bewusst in das Paket übernehmen, bevor Stow sie verwalten soll.
  • Die Option --adopt kann vorhandene Dateien aus dem Ziel in das Paket verschieben. Sie kann Dateien verändern; nur nach Prüfung und mit Backup verwenden.
  • Symlinks können auf dasselbe Dateisystem oder über verschiedene Datenträger hinweg zeigen, solange Ziel und Link erreichbar sind.
  • Stow ist kein Paketmanager und installiert keine Programme. Für hostabhängige Logik, Templates oder zusätzliche Aktionen sind Skripte oder andere Dotfile-Manager nötig.

Siehe auch