Stow

    GNU Stow pour gérer ses fichiers de configuration

    Introduction

    GNU Stow est un gestionnaire de liens symboliques cr√©√© par GNU. Si on cite la documentation officielle : <<GNU Stow est un gestionnaire de liens symboliques qui prend des paquets ou des donn√©es situ√©s dans des r√©pertoires diff√©rents du syst√®me et les fait appara√ģtre comme install√©s au m√™me endroit.>> En termes plus clairs, imaginons que nous ayons un dossier /usr/bin/stow contenant un dossier dir qui contient lui-m√™me des sous dossiers et fichiers.

    /
    |-- usr
    	|-- bin
    		|-- stow
    			--| dir
    				file.txt
    				|--dir1
    				|--dir2
    					|--dir21
    

    Si on applique Stow au dossier avec la commande stow /usr/bin/stow, Stow va créer un lien symbolique /usr/bin/dir pointant vers /usr/bin/stow/dir, cela s'applique récursivement à tout le contenu du répertoire dir. La commande stow -D /usr/bin/stow supprime elle les liens symboliques pour revenir à la situation de départ.

    /
    |-- usr
    	|-- bin
    		--| dir -> /usr/bin/stow/dir
    			file.txt -> /usr/bin/stow/dir/file.txt
    			|--dir1 -> /usr/bin/stow/dir/dir1/
    			|--dir2 -> /usr/bin/stow/dir2/
    				|--dir21 -> /usr/bin/stow/dir2/dir21/
    		|-- stow
    			--| dir
    				file.txt
    				|--dir1
    				|--dir2
    					|--dir21
    

    Stow a √©t√© cr√©√© √† la base pour g√©rer facilement les biblioth√®ques compil√©es depuis le code source par l'utilisateur. De fait, on peut facilement faire coexister plusieurs versions d'une m√™me biblioth√®que de mani√®re extr√™mement s√Ľr : Stow ne supprime et ne modifie aucun fichier et dossier dont il n'est pas le propri√©taire.

    On voit aussi l'intérêt pour gérer les fichiers de configuration, que ce soit pour installer facilement sa configuration sur une nouvelle machine en combinant Git et Stow, ou bien de faire coexister plusieurs configurations sur une même machine (cas plus rare).

    Dotfiles

    Nous allons maintenant voir comment gérer nos fichiers de configuration (dotfiles dans le jargon) avec Stow. D'abord nous allons tout d'abord créer un répertoire dotfiles/ dans ~/ (par défaut, Stow placera les liens symboliques dans le dossier hiérarchiquement au-dessus du dossier dotfiles, ici ~/, on peut changer la destination par défaut en précisant stow -t destination).

    cd
    mkdir dotfiles
    cd dotfiles
    git init
    

    Nous allons créer un répertoire pour chaque logiciel dont nous voulons gérer la configuration.

    mkdir vim
    mkdir tmux
    

    Déplaçons les fichiers et dossiers de configurations dans chaque répertoire.

    mv ~/.vim/ vim/
    mv ~/.vimrc vim/
    mv ~/.tmux/ tmux/
    mv ~/.tmux.conf tmux/
    

    On peut sauvegarder les modifications à l'aide de Git.

    git add vim/
    git commit -m "[ajout] ajout de la configuration vim"
    git add tmux/
    git commit -m "[ajout] ajout de la configuration tmux"
    

    Enfin nous pouvons activer les configurations.

    stow vim
    stow tmux
    

    Et voilà nos configurations sont maintenant gérées à l'aide de Stow. Si on a une deuxième configuration on peut ajouter un dossier avec les configurations alternatives.

    mkdir vim2
    mv ~/.vim/ vim2/
    mv ~/vimrc vim2/
    

    Et on peut changer de configuration simplement.

    stow -D vim vim2
    

    Voilà nous avons vu le fonctionnement basique du logiciel Stow pour gérer des fichiers de configuration. Pour une utilisation plus complexe on pourra se référer à la documentation officielle.

    1. Documentation officielle