DSIW

Alles was interessant ist... (Linux, Programmierung, Datenschutz, Medien, uvm.)

Versionierung von /etc

| Comments

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.

Weitere Informationen

Comments