Dass Quellcode von Software in einem Versionsverwaltungssystem (VCS), wie zum Beispiel Git, verwaltet wird, ist den Leuten, die
sich damit beschäftigen völlig normal.
Dieses System kann man aber auch auf Konfigurationsdateien angewendet werden. Das hat den Vorteil, dass man nach einer
Installation genau sehen kann, welche Konfigurationsdateien von dieser Software im System erstellt oder verändert
werden.
„etckeeper“ ist eine Software, die sich dafür eignet und besitzt weitere Features
zu den normalen VCS.
Etckeeper
Etckeeper ist eine Software, die andere VCSs nutzt. Zur Auswahl stehen hier:
Die Konfigurationsdatei von etckeeper
befindet sich unter /etc/etckeeper/etckeeper.conf
.
Da die üblichen Versionsverwaltungssysteme keine Dateiberechtigungen und Dateibesitzer speichern wird dies von
etckeeper
in der Datei /etc/.etckeeper
erledigt. Dies ist eine einfache Textdatei, die verändert werden kann. Aber
davon würde ich eher abraten.
Installation
Unter Arch Linux gibt es das Paket etckeeper
im AUR.
Initialisierung mit Git
Nachdem die Software installiert ist, muss das Git-Repository angelegt werden:
# etckeeper init
# git status
Nun können alle Konfigurationsdateien dem Repository hingezufügen werden:
# git add .
# git commit -m "Initial commit"
# git gc # pack git repo to save a lot of space
Falls jemand nicht möchte, dass manche Konfigurationsdateien hinzugefügt werden, kann diese Datei in die
/etc/.gitignore
eintragen.
Workflow
Ich melde mich immer zuerst als root
an, damit ich nicht immer sudo
vor meine Befehle schreiben muss:
$ su
Danach kann der normale Git-Workflow beibehalten werden, denn es wird nur mit Git gearbeitet.
Erst wenn neue Dateien dem Repository hinzugefügt wurden und commitet wurden, muss man
wieder etckeeper init
ausführen, damit die Metadaten mitgesichert werden.
Anschließend darf man natürlich nicht vergessen, sich vom root
wieder abzumelden über:
# exit
Probleme
Schön wäre es natürlich noch, wenn andere Konfigurationsdateien, als die, die sich in /etc
befinden, versioniert
werden würden. Dafür habe ich noch keine Lösung gefunden. Aber zur Not könnte man ein Verzeichnis wie /etc/others
erstellen, das symbolische Links oder Hardlinks enthält:
# mkdir -p /etc/others
# ln -s /boot/grub .
Hardlinks funktionieren nur innerhalb einer Partition, also über Festplatten oder Partitionen hinweg nicht.
Fazit
Das Versionieren von Konfigurationsdateien bringt einige Vorteile:
- Es können keine Konfigurationsdateien verloren gehen.
- Man lernt die benutzten Programme und deren Konfigurationsdateien besser kennen.
- Alle Vorteile des eingesetzten Versionsverwaltungssystems werden übernommen, somit können zum Beispiel ältere Zustände von Konfigurationsdateien wiederhergestellt werden.
Ich bin mir der Lösung sehr zufrieden, auch wenn es mir Mehraufwand verbunden ist.