Projekt

Allgemein

Profil

ETCkeeper » Historie » Revision 18

Revision 17 (Josef Braun, 02.01.2010 15:15) → Revision 18/28 (Josef Braun, 02.01.2010 15:23)

h1. Versionierung von Dateien im /etc VerzeichnisOrdner
mit etckeeper

{{>toc}}

h2. etckeeper speichert /etc in Git, Mercurial, Bzr oder Darcs SCMs

etckeeper ist ein Werkzeug, um /etc in einem Git- , Mercurial- , Bzr- oder Darcs-Depot speichern zu können. Es hängt sich in APT ein und überträgt die Änderungen in /etc, die während der Paketaktualisierung gemacht wurden. Es macht die Metadaten der Dateien ausfindig, was Versionskontrollsysteme normalerweise nicht unterstützen, dies ist allerdings wichtig für /etc, wie z. B. die Rechte von /etc/shadow. Es ist recht modular und konfigurierbar, gleichzeitig auch einfach zu benutzen, wenn Sie die Grundlagen des Arbeitens mit Versionskontrolle verstehen.

(am Beispiel einer OpenSuse Installation mit Mercurial)

h2. Schritte zur fertigen Installation

* die Pakete git und mercurial mit yast installieren

* die aktuelle Version vom git repository abholen.

Dazu in ein leeres bzw. neues Verzeichnis wechseln und aufrufen:
<pre>
md ~/src
cd ~/src
git clone git://git.kitenet.net/etckeeper

</pre>

* in das etckeeper Verzeichnis wechseln

die *etckeeper.conf* bearbeiten und


# das verwendete SCM von git auf merical umstellen
# high-level package manager und
# low-level package manager umstellen

<pre>
# /etc/etckeeper.conf
#
# version 0.41
#
# 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
HIGHLEVEL_PACKAGE_MANAGER=yum

# The low-level package manager that's being used.
# (dpkg, rpm, pacman-g2, etc)
#LOWLEVEL_PACKAGE_MANAGER=dpkg
LOWLEVEL_PACKAGE_MANAGER=rpm
</pre>

* nun die Dateien nach /etc/etckeeper installieren dazu nun wie folgt 'make install' ausführen:

<pre>
make install
</pre>

das liefert in etwa folgenden Output bei Erfolg.

<pre>
mkdir -p /etc/etckeeper/ /var/cache/etckeeper/
cp -a *.d /etc/etckeeper/
install -m 0644 -D etckeeper.conf /etc/etckeeper/etckeeper.conf
install -D etckeeper /usr/sbin/etckeeper
install -m 0644 -D etckeeper.8 /usr/share/man/man8/etckeeper.8
install -m 0644 -D bash_completion /etc/bash_completion.d/etckeeper
install -m 0644 -D yum-etckeeper.py /usr/lib/yum-plugins/etckeeper.py
install -m 0644 -D yum-etckeeper.conf /etc/yum/pluginconf.d/etckeeper.conf
./etckeeper-bzr/__init__.py install --root= || echo "** bzr support not installed"
Traceback (most recent call last):
File "./etckeeper-bzr/__init__.py", line 6, in <module>
import bzrlib
ImportError: No module named bzrlib
** bzr support not installed
echo "** installation successful"
** installation successful
</pre>

* das Init Repository noch erzeugen und dann Fertig!
<pre>
etckeeper init</pre>

nun existiert der komplette /etc/etckeeper sowie /etc/.hg (bei letzterem noch *schauen, ob die Rechte passen*, damit nicht jeder Einsicht bekommt!)

* nun das Repository mit den Files befüllen. Über Status wird zuvor nachgesehen, ob auch alle Files hinzugefügt wurden mit dem init

<pre>
cd /etc
hg status
</pre>

* das Ignorefile von Mercurial nun noch anpassen und alle VerzeichnsZweige etc. aufnehmen, die nicht ins Repository sollen - vor allem alles an binären bzw. großen Files etc.

<pre>
vi /etc/.hgignore
</pre>

* abschliend den Commit der Files durchführen.

<pre>

hg commit -m "initial etckeeper checkin"
</pre>

h2. Befehle im Betrieb

nach jeder Änderung die gespeichert werden soll ein *commit* machen:
z.b.
<pre>
passwd someuser
hg status
hg commit -m "changed a password"

</pre>

oder auch

<pre>
etckeeper commit "Hier meine gewünschte Notiz eintragen"
</pre>

etckeeper commit kann auch täglich über einen cron job welcher aber nicht durch die installation wie im Readme beschrieben, sondern selbst anzulegen wäre.


h2. weitere Links sowie Dokumentationen

weiter Details zu finden im *README* der Source Installation (ein Ausschnitt daraus das [[etckeeper_tutorial|etckeeper Tutorial]])

Entwicklerseite auf http://kitenet.net/~joey/code/etckeeper

Debian Paket zum Vergleich http://packages.debian.org/de/sid/etckeeper
Redmine Appliance - Powered by TurnKey Linux