etckeeper#

etckeeper ist eine Sammlung von Werkzeugen, mit denen das /etc-Verzeichnis in einem Git-Repository verwaltet werden kann. So können Änderungen überprüft und ggf. rückgängig gemacht werden. Zudem verbindet es sich mit Paketmanagern wie apt, um Änderungen, die während eines Paket-Upgrades an /etc vorgenommen werden, automatisch zu übertragen. Schließlich werden auch Metadaten von Dateien berücksichtigt, die Git normalerweise nicht verwaltet, die aber für /etc wichtig sind, wie z.B. die Berechtigungen von` /etc/shadow.

Installation#

etckeeper kann einfach installiert werden mit

$ sudo apt install git etckeeper

Konfiguration#

  1. Die Konfiguration von etckeeper erfolgt in der etckeeper.conf-Datei:

    $ sudo vi /etc/etckeeper/etckeeper.conf
    # The VCS to use.
    #VCS="hg"
    VCS="git"
    #VCS="bzr"
    #VCS="darcs"
  2. Außerdem sollten die folgenden beiden automatischen Commits vermieden werden:

    # Uncomment to avoid etckeeper committing existing changes
    # to /etc automatically once per day.
    AVOID_DAILY_AUTOCOMMITS=1# Uncomment to avoid etckeeper committing existing changes to
    # /etc before installation. It will cancel the installation,
    # so you can commit the changes by hand.
    AVOID_COMMIT_BEFORE_INSTALL=1
    
  3. Nun sollte noch git selbst konfiguriert werden, s. Konfiguration.

  4. Schließlich kann das /etc-Verzeichnis unter die Git-Versionsverwaltung genommen werden mit:

    $ cd /etc/
    $ sudo etckeeper init
    Initialized empty Git repository in /etc/.git/
    $ sudo etckeeper commit "Initial commit"
    

Verwendung#

Wird nun eine Konfigurationsdatei editiert, so können die Änderungen nun einfach mit Git protokolliert werden.

Metadaten verwalten#

Da Git an sich keine vollständigen Metadaten aufzeichnet, wurde von etckeeper ein pre-commit Hook in /etc/.git/hooks/pre-commit eingerichtet. Dieser protokolliert in der Datei /etc/.etckeeper die chmod- und chgrp-Angaben für alle Dateien die nicht den Standardrechten entsprechen:

maybe chmod 0755 '.'
maybe chmod 0700 './.etckeeper'
maybe chmod 0644 './.gitignore'
…
. gitignore

Dateien, die nicht mit Git im /etc-Verzeichnis versioniert werden sollen, können in der Datei /etc/.gitignore hinzugefügt werden. Diese Datei wird beim Initiieren von etckeeper erzeugt und kann ggf. ergänzt werden nach dem Kommentar

# end section managed by etckeeper