This commit is contained in:
2026-10-31 19:09:32 +01:00
parent 5fb4db5069
commit 9df5da50b0
12 changed files with 1236 additions and 1 deletions
+63
View File
@@ -0,0 +1,63 @@
# 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]]