Files
it-know-how/Linux/stow.md
T
2026-10-31 19:09:32 +01:00

64 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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]]