Gestion des dotfiles avec Stow : méthode simple et fiable Découverte pragmatique : gérer ses dotfiles avec Stow via des packages et des liens symboliques pour une configuration reproductible. Gérer des dotfiles avec Stow a changé ma manière de configurer mes outils.
Gérer des dotfiles avec Stow a changé ma manière de configurer mes outils. Après des années à empiler des scripts et des configurations sur une clé USB, j'ai trouvé une approche simple et fiable pour les déployer sur plusieurs machines. GNU Stow, qui existe depuis longtemps, offre une manière élégante de transformer des fichiers de configuration en liens symboliques gérés de façon reproductible. Le résultat: un dépôt central, des packages bien organisés et une synchronisation sans douleur.
Comment fonctionne GNU Stow et pourquoi il convient aux dotfiles
Par définition, Stow organise les fichiers de configuration dans un dépôt structuré en répertoires « packages ». Chaque package correspond à une collection de fichiers destinés à être reliés dans le système via des liens symboliques. Le principe est simple: un répertoire par outil ou par catégorie, et une commande qui crée les liens dans le répertoire cible (généralement le répertoire personnel). Lorsque vous modifiez un fichier dans le dépôt, le changement se répercute à travers le lien, sans déplacer les fichiers d'origine.
Concrètement, on place les fichiers destinés à un outil dans un sous-dossier du dépôt, puis on utilise la commande stow pour créer les liens symboliques qui pointent vers ces fichiers dans le home directory. La configuration devient ainsi modulable et réutilisable sur plusieurs machines, sans duplication inutile.
Un flux de travail simple et reproductible
Pour démarrer, on organise le dépôt en packages clairs: un package par élément (par exemple zsh, vim, git). Chaque package contient les fichiers qui doivent être placés dans le répertoire cible. Avec cette organisation, déployer une configuration sur une nouvelle machine devient une opération unique et traçable.
Exemple de flux basique :
stow -d dotfiles -t "$HOME" zsh vim git
Pour tester sans modifier le système, on peut lancer un « dry-run » qui liste les actions prévues sans les appliquer :
stow -n -d dotfiles -t "$HOME" zsh vim git
Limites, pièges et ce qu'il faut surveiller
La méthode repose sur des liens symboliques et une organisation claire. Cela peut sembler simple en théorie, mais quelques écueils reviennent souvent lors de la mise en place :
- Conflits lorsque des fichiers existent déjà : si un fichier de destination existe et n’est pas géré par le dépôt, Stow échoue et demande une résolution manuelle.
- Fichiers binaires et grands jeux de données : Stow est idéal pour des fichiers texte de configuration; pour des binaires, la gestion peut devenir lourde et les déploiements plus lents.
- Constance du chemin : l’architecture des packages doit correspondre au chemin réel attendu dans le système; tout décalage nécessite des ajustements des packages.
- Compatibilité : certains environnements non POSIX ou Windows (sans WSL ou équivalent) peuvent nécessiter des ajustements ou des outils alternatifs.
Pour terminer
Avec Stow, la gestion des dotfiles passe d’un bricolage à une discipline reproductible. Le dépôt central offre une vision claire de ce qui est déployé et sur quelles machines. J’apprécie particulièrement le fait de pouvoir ajouter ou retirer un package sans toucher au reste, et de tester rapidement l’impact des changements grâce au mode dry-run. Reste une question toutefois: êtes-vous prêt à structurer votre configuration autour d’un seul référentiel et à privilégier les liens symboliques plutôt que les copies ?