GNU Stow: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) |
||
Zeile 56: | Zeile 56: | ||
mv ~/.config/.zshrc terminal/dot-zshrc | mv ~/.config/.zshrc terminal/dot-zshrc | ||
... | .... | ||
├── multimedia | |||
│ └── dot-config | |||
│ ├── mpv | |||
│ │ ├── input.conf | |||
│ │ └── mpv.conf | |||
│ └── yt-dlp | |||
│ └── config | |||
└── terminal | |||
├── dot-config | |||
│ └── alacritty | |||
│ └── alacritty.toml | |||
└── dot-zshrc | |||
=== „Ausrollen“ der ge-stow-ten Dateien === | === „Ausrollen“ der ge-stow-ten Dateien === |
Version vom 28. Januar 2025, 15:50 Uhr
„GNU Stow“ wurde von Dirk (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Dirk (Diskussion) bitte, bevor du den Artikel bearbeitest.
Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!
GNU Stow ist ein „Symlinkfarm-Manager“, mit dem es möglich ist, Dateien und Verzeichnisse aus verschiedenen Pfaden an einer Stelle zu verwalten. Das Programm wird meistens dazu verwendet, um Dotfiles gesammelt an einer Stelle zu haben um sie einfacher mittels Git versionieren zu können.
Installation
GNU Stow ist als
stow
in extra
verfügbar, und kann von dort
mittels Pacman
installiert werden.
pacman -S stow
# Für die Versionierung
pacman -S git
Mittels des Befehls stow
lässt sich GNU Stow dann aufrufen.
Verhalten von stow
Standardmäßig benutzt GNU Stow das aktuelle Verzeichnis als Stow Directory, aus dem heraus die Packages ausgerollt werden. Zum Ausrollen wird standardmäßig das Elternverzeichnis benutzt. Wenn also zum Beispiel /home/user/.dotfiles
als Stow Directory benutzt wird, ist das Target Directory automatisch /home/user/
.
Diese Konfiguration lässt sich mittels der Parameter --dir
(das Stow Directory) und --target
(für das Target Directory) anpassen. Wenn nur --dir
angegeben wird, wird als Target Directory automatisch das Elternverzeichnis des angegebenen Verzeichnisses benutzt.
Der Einfachheit halber kann man sich hier auch einen Alias setzen, wenn man sowieso nur seine Dotfiles verwalten will.
alias stow="/usr/bin/stow --dir /home/user/.config/dotfiles --target /home/user"
Hiermit wird /home/user/.config/dotfiles
als Stow Directory benutzt in dem die Packages liegen, und /home/user
ist das Target Directory in dem „gerarbeitet wird“, wo also die Symlinks angelegt werden, die durch GNU Stow verwaltet werden.
Alternativ kann im gewünschten Stow Directory eine Datei angelegt werden, in der Konfigurationsoptionen abgelegt werden können. Vor dem Aufruf von stow
muss man dann in das Verzeichnis wechseln. Dies ermöglicht die einfachere Verwaltung verschiedener Stow-Repositorys.
/home/user/.config/dotfiles/.stowrc
--dir /home/user/.config/dotfiles --target /home/user
Dies hat den selben Effekt wie der beschriebene Alias, sofern man vor dem Aufruf ins Verzeichnis /home/user/.config/dotfiles/
wechselt.
Wenn im Stow-Repository ausschließlich Dotfiles verwaltet werden sollen, so kann man noch den Parameter --dotfiles
übergeben. Dier erlaubt es, Dotfiles „sichtbar“ in den Packages abzulegen. Dateien und Verzeichnisse auf der oberen Ebene müssen damit nicht als .irgendwas
abgelegt werden, sondern könenn als dot-irgendwas
abgelegt werden, was dafür sorgt, dass man nicht lauter „leere“ Verzeichnisse als Packages hat.
Dateien Verwalten
Die Verwaltung von Dateien erfolgt innerhalb von GNU Stow in Packages, dies sind einfache Verzeichnisse auf oberer Ebene innerhalb des Stow Directorys. Innerhalb dieser Packages werden die Dateien als Installation Image verwaltet. Ein Installation Image ist dabei die Struktur an Dateien und Verzeichnissen, wie sie später im Target Directory vorhanden sein soll.
Anlegen eines Stow-Repositorys zur Verwaltung von Dotfiles:
mkdir ~/.config/dotfiles # Verzeichnis erstellen ... cd ~/.config/dotfiles # ... und reinwechseln echo '--dotfiles' > .stowrc # den Parameter --dotfiles lokal einrichten
Damit ist die Grundlage geschaffen, die Dotfiles zu verwalten. Es müssen nun die entsprechenden Packages erstellt werden, di eman später verwenden möchte, um die Dotfiles auszurollen. Hier kann man entweder auf Programmebene arbeiten, und die Dotfiles eines jeden Programms separat erfassen, oder aber die Installation Images so erstellen, dass mehrere Dinge zusammengefasst werden.
Hier werden zwei Packages angelegt, und das Installation Image schon mal derart vorbereitet, dass .config
angelegt wird, wohin später Teile der Konfiguration verschoben werden.
mkdir multimedia/dot-config mkdir terminal/dot-config
An dieser Stelle kann nun die gewünschten Konfiguration angelegt werden. Es werden die Konfigurationsdateien von mpv, yt-dlp, Alacritty, und der Zsh in das Stow-Repository verschoben.
mv ~/.config/mpv multimedia/dot-config/ mv ~/.config/yt-dlp multimedia/dot-config/ mv ~/.config/alacritty terminal/dot-config mv ~/.config/.zshrc terminal/dot-zshrc
.... ├── multimedia │ └── dot-config │ ├── mpv │ │ ├── input.conf │ │ └── mpv.conf │ └── yt-dlp │ └── config └── terminal
├── dot-config │ └── alacritty │ └── alacritty.toml └── dot-zshrc