Linux Konfigurationen verteilen
Ich versuche momentan aus verschiedenen Gründen immer mehr Programme auf der Kommandozeile mit einfachen Linuxwerkzeugen zu erledigen. Beipiele sind mutt (Mailprogramm) und vim (Editor). Einer der Vorteile ist das die Konfigurationen meistens in einem Textformat vorliegen und somit auch über eine Versionskontrolle verwaltet und verteilt werden können.
Anhand dieses Beitrags habe ich versucht zum Einstieg die mutt in vim Konfigurationen zu verteilen.
Zuerst wird auf dem Gitlabserver ein neues Repository erstellt und in das eigene Verzeichnis geclont.
git clone git@git.hgnb.de:hb/dotfiles.git
cd dotfiles
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Die Konfigurationen für mutt und vim liegen standardmäßig leider nicht im gleichen Verzeichnis. .vimrc liegt im $HOME Verzeichnis und die mutt Konfiguration liegt im .config Verzeichnis.
mkdir .config
mv ~/.vimrc ~/dotfiles/
mv ~/.config/mutt ~/dotfiles
Jetzt brauchen wir ein Script das uns für alle Konfigurationsdateien und -verzeichnisse die wir in dem dotfiles Verzeichnis verwalten einen symbolischen Link an die richtige stelle setzt.
vi install_dotfiles.sh
#!/bin/bash
dotfiles=(".vimrc" ".config/mutt" ".password-store" )
dir="${HOME}/dotfiles"
for dotfile in "${dotfiles[@]}";do
echo "${HOME}/${dotfile}"
ln -s "${HOME}/dotfiles/${dotfile}" "${HOME}/${dotfile}"
done
chmod +x install_dotfiles.sh
Einige Cache Daten für mutt wollen wir aber nicht im Git haben
vi .gitignore
.config/mutt/accounts/*
Jetzt noch alle Dateien in das Repository einchecken
git add .config .password-store .vimrc install_dotfiles.sh .gitignore
git commit
git push
Kommen wir jetzt auf einen neuen Rechner brauchen wir nur das Repository zu hohlen und den “Installer” starten
git clone git@hawk:hb/dotfiles.git
cd dotfiles/
./install_dotfiles.sh
Wollen wir dann später eine weitere Konfiguration diesem Ansatz hinzufügen müssen wir es nur in das dotfiles Verzeichnis verschieben. Die neue Datei in den Installer aufnehmen und einchecken.
mv .vim dotfiles
vi dotfiles/install_dotfiles.sh
cd dotfiles
git add .vim
git commit install_dotfiles.sh
git push
Dann können wir auf den anderen Rechner die Konfiguration einfach hohlen
cd dotfiles/
git pull
./install_dotfiles.sh