# 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. ```text ~/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: ```bash # 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 - [[IT-Know-How/Linux/Hyprland/Stow mit Logik|Stow mit Logik]] – GNU Stow mit Skripten kombinieren - [[IT-Know-How/Linux/Linux|Linux]]