Systemkonfiguration mit GNU RCSInhaltEinführungVerwaltung der RCS-Repositories Anwendung von RCS Verwaltung der RCS-Repositories eines Verzeichnisses Wichtige RCS-Kommandos EinführungGNU RCS, das Revison Control System, dient allgemein der Verwaltung unterschiedlicher Versionen von Dateien. Mit Dateien sind in diesem Zusammenhang in erster Linie die Quelltexte eines Programms zu verstehen. Dabei dient RCS dazu, unterschiedliche Versionsstände von Programmen zu verwalten, z.B. um Produktivversionen von Entwicklungsversionen zu trennen. RCS verwaltet dazu spezielle Dateien, Repositories genannt, in denen die "Urversion" und die Änderungen gespeichert sind. Damit ist RCS in der Lage, den Zustand der Originaldatei in beliebigen Versionsständen wieder herzustellen. Dieser Vorgang wird "auschecken" genannt.. Da RCS jede Datei mit einem einzelnen Repository verwaltet, ist es für die Quellen von Programmen, die üblicherweise aus einer Vielzahl einzelner Dateien bestehen, wenig geeignet. Die Weiterentwicklung diese Konzepts ist GNU CVS.Bei der Versionsverwaltung von Systemkonfigurationen gibt es einen bedeutenden Unterschied zur Versionsverwaltung von Programmen:
Verwaltung der RCS-RepositoriesNach der Installation des erforderlichen Pakets kann RCS direkt verwendet werden. Ohne weiter Einrichtung erzeugt ci, das RCS-Kommando zum einchecken eines Versionsstandes, das erforderliche Repository im gleichen Verzeichnis wie die Originaldatei. Das Repository unterscheidet sich vom Original durch die Dateinamenerweiterung ",v".Es ist jedoch wünschenswert, die Repositories von den Originaldateien zu trennen. Dazu muss im gleichen Verzeichnis, in dem die Originaldatei steht, ein Unterverzeichnis RCS (Großschreibung beachten!) erzeugt werden. ci erzeugt dann die Repositories für alle Dateien, auf die es angewendet wird, in diesem Unterverzeichnis. Beispiel: Original und Repository für die Konfiguration des SSH-Daemons sshd, /etc/ssh/sshd_conf:
Anwendung von RCSDemonstration der Anwendung von RCS am Beispiel der Konfigurationsdatei für den SSH-Daemon sshd.Ausgangsszenario:
rcsdiff sshd_conf Verwaltung der RCS-Repositories eines VerzeichnissesWie in der "Einführung" angedeutet wurde, entspricht die hier vorgestellte Methode nicht ganz der Absicht der RCS-Entwickler. RCS pflegt den Versionsstand einer Datei. Bei der Verwaltung der Konfiguration eines Systems müssen die Informationen der verschienden RCS-Repositories in einem Verzeichnis zusammengefasst werden.Zuvor muss außerdem sichergestellt werden, dass alle Änderungen an den Konfigurationsdateien mit ci eingepflegt worden sind. Beide Aufgaben können nicht mit den "Bordmitteln" von RCS gelöst werden. Das Perl-Skript
Für die Nutzung dieses Skripts müssen folgende Perl-Pakete installiert sein:
Aktualität der Repositories überprüfenDie Option -c (check) überprüft die unter dem angegebenen Verzeichnis vorhanden RCS-Repositories auf Aktualität.Das folgende Beispiel muss als root ausgeführt werden, da nicht alle Dateien in /etc als normaler User lesbar sind: # bin/checkrcs.pl -c /etc Ueberrpuefe RCS-Repositories in /etc 24 RCS-Repositories gefunden 2180 Originaldateien gefunden RCS-Repositories ohne Quelldatei: 0 RCS-Repositories ohne Quelldateien gefunden Quelldateien mit veralteten RCS-Repositories /etc/fstab 1 Quelldatei mit veraltetem RCS-Repository gefunden Hinweise: RCS-Repositories ohne Quelldateien Wenn RCS-Repositories ohne Quelldateien gefunden werden, deutet dies darauf hin, dass Pakete installiert, konfiguriert und die Versionen mit RCS verwaltet worden waren. In der Zwischenzeit sind die betreffenden Pakete gelöscht worden. Die entsprechenden Repositories können ggf. auch gelöscht werden. Quelldateien mit veralteten RCS-Repositories Wenn die letzte in RCS eingepflegte Version die Quelldatei verschieden sind, ist das Repository veraltet.
Dokumentation der Änderungen in einem VerzeichnisDie Option -d (documentation) erstellt eine Dokumentation für ein Verzeichnis. Die Dokumentation umfasst alle Quelldateien unterhalb des angegebenen Verzeichnisses, für die ein RCS-Repository vorhanden ist:
# bin/checkrcs.pl -ds /etc ... /etc/fonts/local.conf: Versionsbeschreibungen: Rev. 1.2: Changes made by package maintainer Änderungen: 30,32c30,32 < <edit name="autohint" mode="assign"> < <bool>true</bool> < </edit> --- > <edit name="rgba" mode="assign"> > <const>rgb</const> > </edit> /etc/proftpd.conf: Versionsbeschreibungen: Rev. 1.1: Initial revision Rev. 1.2: Adding incoming directory with write permissions to all Rev. 1.3: Using upload directory instead of incoming for public upload Änderungen: 79,85d78 < # Allow write to incoming directory < <Directory upload> < <Limit WRITE> < AllowAll < </Limit> < </Directory> < 88,90c81,83 < <Limit WRITE> < DenyAll < </Limit> --- > <Limit WRITE> > DenyAll > </Limit> ... Auf diese Weise erhält man eine vollständige Übersicht über die Änderungen, die in /etc durchgeführt wurden. Wichtige RCS-Kommandos
|