Sous Unix, nous avons moult fichiers de configuration, souvent cachés parce
que commençant par un ‘.’. Par exemple le fichier .bashrc
. Il peut être
intéressant de conserver un historique de ces fichiers et de pouvoir
les réutiliser sur une autre machine.
L’idée est donc de mettre ces fichiers dans un dépôt git
et de
les pousser régulirement vers le serveur (si possible externe).
Vous devez donc disposer d’un serveur git
opérationnel, d’une connaissance des
commandes git
et d’une dose de courage.
Un dépôt bare
Sur votre serveur, créez un dépôt bare
que vous appellerez, par exemple,
dotfiles.
% mkdir dotfiles
% cd dotfiles
% git init -bare
Cloner le dépôt bare
Sur votre machine, clonez le dépôt bare
créé plus haut :
% git clone https://mon_serveur/depots/dotfiles .dotfiles
Cloning into '.dotfiles'...
warning: You appear to have cloned an empty repository
done.
Gérez les fichiers et répertoire dot
C’est l’opération la plus délicate et la plus rébarbative de la mise en place.
Pour chacun des fichiers que vous voulez voir mis dans le dépôt, déplacer ce fichier dans le répertoire du dépôt que vous venez de cloner et faites un lien symbolique, depuis ce fichier vers sa place initiale. Compliqué ? Pas tant que ça, voyez plutôt (l’ami de Mickey).
j’ai ajouté un répertoire avec le nom de ma machine
${HOSTNAME}
pour me permettre de gérer les fichiers dot de plusieurs ordinateurs. Je pourrais ajouter une indirection de plus avec le type de machine, serveur ou poste de travail.
% cd ①
% mv .bashrc ~/.dotfiles/tarzan ②
% ln -s /.dotfiles/tarzan/.bashrc ③
① on s’assure d’être dans son répertoire HOME ;
② on déplace le fichier bashrc
dans le répertoire cloné ;
③ on crée un lien symbolique depuis la version du répertoire cloné vers notre
${HOME}
On procède de la même manière pour les répertoires, par exemple .config
.
Quelques fichiers supplémentaires
Vous pouvez adjoindre cette liste non exhaustive, la liste des logiciels installés. Vous gagnerez un temps précieux en lançant l’installation d’une traite de tous les logiciels dont vous avez besoin.
- Sur FreeBSD, exécutez la commande
pkg prime-list > ~/.dotfiles/tarzan/installed_pkg.txt
. Pour restaurer cette liste vous pouvez utiliser la succession de commandespkglist=$(cat ~/.dotfiles/x220/installed_pkg.txt); sudo pkg install $pkglist
. - Sur Debian et assimilés utilisez
sudo dpkg-query -f '${binary:Package}\n' -W > ~/.dotfiles/tarzan/installed_pkg.txt packages_list.txt
et pour réinstaller cette liste,sudo xargs -a ~/.dotfiles/tarzan/installed_pkg.txt apt install
- Enfin sur Redhat et assimilé, utilisez
rpm -qa > ~/.dotfiles/tarzan/installed_pkg.txt
et pour réinstaller, utilisezcat ~/.dotfiles/x220/tarzan/installed_pkg.txt | xargs sudo dnf -y install
-`
Pensez à mettre jour cette liste régulirement.
Gestion git
Ensuite, c’est de la gestion git
basique.
% cd ~/.dotfiles/
% git add
% git commit -m "Commit initial" -a
% git push https://mon_serveur/depots
Le plus de Monsieur Git
Dans les fichiers que je veux gérer se trouve le répertoire .vim
qui lui-même
contient des clones des greffons que j’utilise. Ceux-ci doivent être ajoutés en
temps que submodules
Cela se fait assez facilement, une fois que l’on a compris le principe. En utilisant des submodules, vous vous assurez d’avoir la dernière version.
git add submodule <URL> <PATH>
Pour le module vim-mardown
que j’utilise pour écrire ce billet, voilà ce que
cela donne (à adapter votre configuration) :
git submodule add https://github.com/preservim/vim-markdown .dotfiles/tarzan/.vim/pack/plugins/start/vim-markdown
Et la suite ?
La suite est simple à chaque modification de l’un de ces fichiers, il faut penser
faire le git commit
et le git push
pour maintenir votre dépôt à jour.
Conclusion
Il existe des scripts ou d’autres méthodes pour la gestion des dotfiles. J’ai préféré ne pas réinventer la roue et faire cela avec des commandes simple, souvent connues de toustes, pour ne pas ajouter à des cerveaux déjà encombrés des commandes supplémentaires.