En tant que programmeur, une grande partie de notre temps au travail est consacrée à développer du code (et à assister à des réunions, bien sûr. ), À tel point que nous passons généralement beaucoup de temps à configurer l’ensemble d’outils que nous utilisons au quotidien. On ne parle pas seulement de l’évolution de la configuration mais aussi de la façon de configurer son nouveau portable, d’avoir plusieurs ordinateurs, ou tout simplement de partager une certaine configuration d’un certain outil avec un collègue.
La grande majorité des applications (et plus encore dans les systèmes UNIX) sont configurées via les « dotfiles » bien connus (stockés dans le $HOME de l’utilisateur), qui ne sont rien de plus que des fichiers ou des dossiers commençant par un . pour configurer les applications (ex : .bashrc, .git/). Le but de commencer par un point est que, par défaut, les systèmes d’exploitation les traitent comme des fichiers cachés et ne les affichent pas à moins que vous ne leur disiez de le faire.
Avant de commencer, expliquons les trois termes que nous devons connaître pour travailler avec STOW, qui sont : Package, Stow Directory et Target Directory.
- Package : C’est une collection de fichiers qui doivent être « installés » ensemble dans le même répertoire cible.
- Stow directory : C’est le dépôt où seront tous nos packages.
- Répertoire cible : C’est le répertoire où nous voulons installer les configurations qui se trouvent dans nos packages.
La fonctionnalité que nous recherchons, Stow, générera un lien symbolique des fichiers que nous avons à l’intérieur de nos packages dans le répertoire cible. Dans l’exemple, si nous exécutons stow git
il créera un lien de ~/.gitconfig vers ~/.dotfiles/git/.gitconfig.
Dans ce cas, la convention décidée par la communauté est de tout placer dans un répertoire appelé .dotfiles à l’intérieur de notre maison, mais c’est quelque chose qui peut être apprécié en lisant des forums et des articles sur la gestion des dotfiles. Il a une certaine logique puisque, dans stow, par défaut, le répertoire cible est le parent du répertoire stow. Cela signifie que si nous plaçons ~/.dotfiles comme répertoire de stockage, le répertoire cible sera ~/, où nous voudrons placer nos fichiers de points.
Le but de cet article est de sortir notre configuration git (.gitconfig) et zsh (.zshrc) de notre maison sans aucun contrôle et de la déplacer dans notre dossier .dotfiles, où nous pouvons la télécharger dans un référentiel git (ranger avec git a une très bonne synergie), synchronisez-le avec Dropbox, ou ce que nous aimons.
Pour commencer, nous allons créer notre répertoire stow, qui peut être où nous voulons, mais dans cet article, nous utiliserons ~/.dotfiles pour les raisons qui ont été expliquées précédemment. Maintenant, nous allons commencer à créer la configuration git. Pour cela, nous allons créer notre git
package à l’intérieur de notre répertoire stow, et à l’intérieur, les fichiers de configuration liés à git que nous voulons créer un simlink dans le répertoire cible.
Dans ce cas, ce ne sera que notre .gitconfig :
$ cd ~
$ mkdir -p .dotfiles/git
$ touch .dotfiles/git/.gitconfig
Maintenant, ce que nous cherchons, c’est de copier le contenu du .gitconfig avec la configuration actuelle qui se trouve dans le $HOME de l’utilisateur (~/.gitconfig), et de le coller dans le nouveau fichier généré à l’intérieur de notre répertoire stow.
Pour cela, nous allons lancer la commande stow avec les paramètres -adopt, -n, et -v, et en argument, nous lui dirons que nous voulons stow dans le dossier git : stow -adopt -nv git
.
Expliquons ce que fait chaque option séparément :
- -n : Avec cette option, nous disons à stow de n’exécuter aucune action ; dites-nous ce qu’il a l’intention de faire si nous supprimons l’option.
- -v : Cette option est celle qui va nous permettre de lire ce que stow a l’intention de faire (au final, c’est pour augmenter le niveau de verbosité).
- -adopter: Cette option est la seule qui modifie le répertoire stow ; tous les autres se concentrent sur le répertoire cible. Avec cette option, ce que nous faisons, c’est qu’avant stowear, il déplacera le fichier actuel du répertoire cible vers le répertoire stow, puis créera le lien. Très utile lorsque nous commençons à créer nos fichiers .dot.
Une fois que nous voyons les actions qu’il va faire, nous avons juste besoin de supprimer le -n
option de la commande pour l’exécuter :
Avec cela, nous pouvons voir comment enregistrer la configuration actuelle dans nos fichiers .dot et comment stow gère facilement tous les liens.
Pour terminer l’article, je voudrais commenter de manière résumée les autres choses que j’ai dû faire avec le rangement :
- Supprimez le lien d’une configuration : stow -D (par défaut, .est en mode lien, c’est-à-dire -S).
- Que se passe-t-il si nous supprimons un fichier de notre répertoire stow (~/.dotfiles) qui était déjà stocké ? Le fichier n’existe pas, mais le lien est toujours là ; pour cela, nous avons stow -R, qui est essentiellement un raccourci vers
stow -D && stow -S
. - Si, pour une raison quelconque, vous ne souhaitez pas avoir votre référentiel dotfiles dans le home (pe: ~/projects/dotfiles), et étant donné que le répertoire cible est le parent (dans ce cas, ce sera ~/projects) , il faut rendre explicite où on veut créer les liens de configuration, pour cela il faut utiliser
stow -t=~
.