Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:etckeeper [2012/04/27 14:15] mhoffmann |
software:etckeeper [2012/10/11 10:23] (aktuell) |
||
---|---|---|---|
Zeile 20: | Zeile 20: | ||
</code> | </code> | ||
- | ==== Konfiguration ==== | + | ===== Konfiguration ===== |
Damit der ETCkeeper auch weiß was für ein VCS er nutzt muss ihm das in der Konfiguration mitgeteilt werden. | 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: | Dazu wird die Konfigurationsdatei bearbeitet: | ||
Zeile 65: | Zeile 66: | ||
# (dpkg, rpm, pacman-g2, etc) | # (dpkg, rpm, pacman-g2, etc) | ||
LOWLEVEL_PACKAGE_MANAGER=dpkg | 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> | </code> | ||
- | === Weiterführende Links und Infos === | + | Es sollte die Meldung ''Initialized emtpy Git repository in /etc/.git/'' erscheinen. |
- | 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]] | + | |
+ | 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! | ||
+ | |||
+ | ===== Entferntes GIT-Repository einrichten und automatischen Push einrichten ===== | ||
+ | Um eine noch bessere Datensicherheit zu erlangen macht es Sinn, das GIT-Repository auf einen entfernten Server zu pushen. | ||
+ | Die Einrichtung hierfür ist nicht schwer. Eine Möglichkeit GIT-Repositories zu Hosten ist [[software:gitolite|]]. | ||
+ | |||
+ | ==== Root SSH-Keys ==== | ||
+ | Da Commit und Push des etckeepers nur mit Rootrechten möglich ist, braucht man für den SSH-Zugriff auf das entfernte GIT-Repository SSH-Keys für den Benutzer **root**: | ||
+ | - Als **root** auf der Shell anmelden mit ''sudo -s'' | ||
+ | - SSH-Keys mit ''ssh-keygen'' erstellen | ||
+ | - PublicKey **id_rsa.pub** aus dem Verzeichnis **/root/.ssh/** kopieren. | ||
+ | |||
+ | ==== Remote Repository einrichten ==== | ||
+ | Im Verzeichnis **/etc** folgenden Befehl mit den entsprechenden Serverdaten ausführen (evtl. als root): | ||
+ | <code> | ||
+ | git remote add origin git@example.com:my_project | ||
+ | </code> | ||
+ | wobei hier **git** der Nutzer des Gitbenutzers ist und **my_project** das Repository. | ||
+ | Läuft der Git-Server nicht auf Port 22 so nutzt man folgenden Befehl: | ||
+ | <code> | ||
+ | git remote add origin ssh://git@example.com:[PORT]/my_project | ||
+ | </code> | ||
+ | |||
+ | ==== Repository initial pushen ==== | ||
+ | <code> | ||
+ | sudo git push -u origin master | ||
+ | </code> | ||
+ | |||
+ | ==== Push automatisieren ==== | ||
+ | In der Config des etckeepers müssen nun noch zwei neue Dateien erstellt werden: | ||
+ | * **/etc/etckeeper/commit.d/60vcs-commit-push** | ||
+ | * **/etc/etckeeper/post-install.d/60vcs-commit-push** | ||
+ | |||
+ | In beide Dateien fügt man folgenden Inhalt ein: | ||
+ | <code> | ||
+ | #!/bin/bash | ||
+ | set -e | ||
+ | |||
+ | git push origin master | ||
+ | </code> | ||
+ | |||
+ | ===== 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]] | ||
- | | + | {{tag>versionsverwaltung backup }} |
Bei Verwendung dieses Wikis erklären Sie sich mit dem Haftungsausschluss, Nutzungsbedingungen und der Datenschutzerklärung dieses Wikis einverstanden. Impressum.