Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
software:etckeeper [2012/05/17 13:45] mhoffmann [Commit] |
software:etckeeper [2012/10/11 10:23] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== ETCkeeper ====== | ||
- | ETCkeeper ist ein sehr nützliches Programm welches das kritische Verzeichnis etc/ unter Versionskontrolle stellt. | ||
- | Dies ist nützlich bei der Installation von neuen Packages, Änderungen in der Konfig und bei allgemeinen Backups. | ||
- | ETCkeeper wird außerdem automatisch ausgeführt wenn per aptitude | ||
- | <code> | ||
- | # sudo apt-get intstall "package" | ||
- | </code> | ||
- | neue Pakete installiert werden. | ||
- | Für ETCkeeper können unterschiedliche Versionverwaltungssysteme genutzt werden, am meisten Sinn macht jedoch GIT((engl. für "Blödmann")), da es als einziges VCS((Version Controll System = Versionskontrollsystem)) auch symbolische Links verarbeitet und versionieren kann. | ||
- | ===== Installation ===== | ||
- | Zunächst muss GIT installiert werden: | ||
- | <code> | ||
- | # sudo apt-get install git-core | ||
- | </code> | ||
- | |||
- | Danach wird noch der ETCkeeper installiert: | ||
- | <code> | ||
- | # sudo apt-get install etckeeper | ||
- | </code> | ||
- | |||
- | ===== Konfiguration ===== | ||
- | Damit der ETCkeeper auch weiß was für ein VCS er nutzt muss ihm das in der Konfiguration mitgeteilt werden. | ||
- | Dazu wird die Konfigurationsdatei bearbeitet: | ||
- | <code> | ||
- | # sudo vi /etc/etckeeper/etckeeper.conf | ||
- | </code> | ||
- | |||
- | Da standardmäßig das VCS "bazaar" genutzt wird muss dieses auskommentiert werden und git angegeben werden. | ||
- | Die Konfiguration sieht dann folgendermaßen aus: | ||
- | |||
- | <code> | ||
- | # The VCS to use. | ||
- | # VCS="hg" | ||
- | VCS="git" | ||
- | #VCS="bzr" | ||
- | # VCS="darcs" | ||
- | |||
- | # Options passed to git commit when run by etckeeper. | ||
- | #GIT_COMMIT_OPTIONS="" | ||
- | |||
- | # Options passed to hg commit when run by etckeeper. | ||
- | #HG_COMMIT_OPTIONS="" | ||
- | |||
- | # Options passed to bzr commit when run by etckeeper. | ||
- | #BZR_COMMIT_OPTIONS="" | ||
- | |||
- | # Options passed to darcs commit when run by etckeeper. | ||
- | #DARCS_COMMIT_OPTIONS="" | ||
- | |||
- | # 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 | ||
- | |||
- | # The high-level package manager that's being used. | ||
- | # (apt, pacman-g2, yum etc) | ||
- | HIGHLEVEL_PACKAGE_MANAGER=apt | ||
- | |||
- | # The low-level package manager that's being used. | ||
- | # (dpkg, rpm, pacman-g2, etc) | ||
- | LOWLEVEL_PACKAGE_MANAGER=dpkg | ||
- | </code> | ||
- | |||
- | Damit der ETCkeeper funktioniert muss zunächst einmal ein lokales GIT-Repository angelegt werden und die Grundkonfiguration geschrieben werden. | ||
- | Die Initialisierung geschieht im Verzeichnis ''/etc'' einfach über | ||
- | <code> | ||
- | # sudo etckeeper init | ||
- | </code> | ||
- | Es sollte die Meldung ''Initialized emtpy Git repository in /etc/.git/'' erscheinen. | ||
- | |||
- | Danach muss der Inhalt von /etc noch zur Versionskontrolle hinzugefügt werden: | ||
- | <code> | ||
- | # cd /etc | ||
- | # sudo git status | ||
- | # sudo git commit -m "initial checkin" | ||
- | # sudo git gc //gc komprimiert das Repository um Platz zu sparen. | ||
- | </code> | ||
- | |||
- | Nachdem diese konfiguration vorgenommen wurde arbeitet etckeeper im Hintergrund und versioniert automatisch bei der installation von Paketen. | ||
- | ==== Commit ==== | ||
- | Bei manuellen Änderungen in der Konfiguration muss folgendermaßen vorgegangen werden um Änderungen zu versionieren: | ||
- | <code> | ||
- | # sudo etckeeper commit | ||
- | </code> | ||
- | |||
- | Es öffnet sich dann ein VI-Fenster in dem eine commit Message angegeben werden **muss**! | ||
- | Die Zeilen mit Hashtag am Anfang dienen nur zur Information und werden nicht als Message comitted. | ||
- | Nach Eingabe eines **kurzen und präzisen** Kommentares drückt man ''ESC'', danach ''wq'' und bestätigt mit ''Enter''. | ||
- | |||
- | Danach erhält man auf dem Bildschirm eine ausgabe, welche Dateien committed wurden. | ||
- | Hat man keinen Kommentar angegeben meldet etckeeper dies. | ||
- | ==== Version einer Datei zurücksetzen ==== | ||
- | Falls eine Datei in /etc zurückgesetzt werden kann dies einfach mit folgendem Befehl realisiert werden: | ||
- | Zuerst muss im Log nachgesehen werden welche Version wieder geholt werden soll: | ||
- | <code> | ||
- | # git log | ||
- | </code> | ||
- | Im Log kann man dann einsehen welche Version man haben will. Hierzu dienen die ersten Stellen des langen Hash-Codes. | ||
- | |||
- | Zurückgesetzt wird die Version dann mit | ||
- | <code> | ||
- | # sudo git checkout <Die ersten paar Ziffern der alten Version> --<File das zurückgesetzt werden soll> | ||
- | </code> | ||
- | |||
- | Soll dann bspw. wieder auf die neueste Version zurückgegriffen werden, so geschieht dies mit: | ||
- | <code> | ||
- | git checkout master | ||
- | </code> | ||
- | **Achtung:** hierbei werden ALLE Dateien aus dem master-commit geholt und überschrieben! | ||
- | |||
- | ===== Weiterführende Links und Infos ===== | ||
- | Ein deutscher Artikel über ETCkeeper: [[http://www.linux-magazin.de/Online-Artikel/Etckeeper-stellt-Systemkonfiguration-unter-Versionskontrolle]] | ||
- | |||
- | Offizielle Seite: [[http://kitenet.net/~joey/code/etckeeper/]] | ||
- | |||
- | Offizielle Entwicklerbeschreibung und Tutorial: [[http://git.kitenet.net/?p=etckeeper.git;a=blob_plain;f=README;hb=27ca6c9eb668c9ab55cf65f8e620893589536c84]] | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.