Versionskontrolle für / etc unter * BSD

14

Welche schlüsselfertigen Lösungen gibt es für die /etcVersionskontrolle unter verschiedenen Bedingungen? Schlüsselfertig bedeutet nicht unbedingt, dass ein Teil der Basisinstallation vorhanden ist, aber die folgenden Funktionen wären hilfreich:

  • Lässt sich in VCS-Befehle einbinden, um Metadaten (Besitzrechte, Berechtigungen) zu verwalten.
  • Integration mit dem Paketmanager (wird vor und nach der Installation automatisch ausgeführt und behandelt Upgrades intelligent);
  • Behandeln Sie vorgelagerte Dateiversionen als Verzweigung.
  • eine vorgefüllte Ignorierliste;
  • Unterstützung für mehrere zugrunde liegende VCS (insbesondere verteilte).

Ich benutze etckeeper unter Debian und Derivaten. Es hat alle oben genannten Funktionen, außer dass es nicht die Upstream-Versionen verfolgt. Ich möchte Alternativen kennenlernen, insbesondere zu * BSD.

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

4

Unter Gentoo unterstützt das Tool zum Verwalten von Paket-induzierten Änderungen an / etc (genannt dispatch-conf) rcs, um Änderungen zu verfolgen, aber das ist nicht wirklich mächtig.

Ich tendiere dazu, mein / etc über zu versionieren git, zumal ich durch die Verwendung verschiedener Zweige mein / etc über verschiedene Distributionen so ähnlich wie möglich halten kann, während ich so viel Material wie möglich an einem Ort halte (für einige Bereiche, die offensichtlich nicht funktionieren, Apache-Konfiguration) zum Beispiel ist wirklich unterschiedlich über verschiedene Distributionen). Das funktioniert so:

Ich habe mein masterRepo mit meinen Standardkonfigurationsdateien. Jetzt komme ich mit einer neuen Distribution in Kontakt und erstelle einen neuen Zweig basierend auf meinem masterZweig basierend auf dem Namen der Distribution (in diesem Beispiel Debian). Debian speichert einige Konfigurationsdateien an einem anderen Ort als masterich git mv file new_loc. Und alles ist gut. Ich masterwechsle zurück zu dieser Datei und ändere sie, weil ich eine bestimmte Konfigurationsanweisung hinzugefügt habe. Beim Zusammenführen masterin meinem debianZweig wird die verschobene Datei geändert, sodass ich im Grunde nur die meisten Dinge in meinem masterZweig ändern kann und nur Änderungen in meiner "Distribution" zusammenführen muss. Zweige (normalerweise sind sie eher eine Mischung aus Distributions- und Zweckzweigen, ein Debian-Server hat offensichtlich einige Unterschiede zu einer Debian-Workstation, aber die Funktionen funktionieren immer noch).

Im Grunde genommen habe ich also eine "generische Konfiguration" masterund (um es objektorientiert auszudrücken) erbe diese in meine Zweige (die auch voneinander erben können).

Abgesehen davon waren gitdie Mechanismen zum "Auswählen" von Commits (in diesem Fall Änderungen an / etc /) für mich zu Zeiten sehr hilfreich, in denen ich nur Teile einer bestimmten Konfiguration benötigte.

Nun zu einigen Ihrer Ideen:

  • Wenn ich mehr Paketmanager-Integration benötigte, würde ich wahrscheinlich Wrapper-Skripte dafür verwenden (im Moment tue ich das nicht).
  • Wenn Sie vorgelagerte Versionen als einen Zweig behandeln, funktioniert dies problemlos git. Es handelt sich nur um einen anderen Zweig, in den Sie manchmal (teilweise) zusammenführenmaster
  • Die Ignorierliste in git ist die Datei .gitignore in Ihrem Repo, die abgedeckt wird.
tante
quelle
Cfg-update auf gentoo gefiel mir besser als dispatch-conf, erstere wird leider nicht gepflegt. Seit ungefähr einem Jahr, bevor ich ging, und es war ein Durcheinander von Spaghetti Perl, imo.
Xenoterracide
3

Ich habe das fossilmit einigem Erfolg genutzt. Weitere Informationen finden Sie in meinem Beitrag zu Fossil . Ich habe auch ein Tool namens verwendet, etcupdatedas sich eher zum Wechseln zwischen Upgrades als zum Nachverfolgen von Änderungen eignet. Ich glaube, es sollte einmal ein Begleitinstrument freebsd-updatesein. Ich bin nicht sicher, ob der Status aktuell ist, aber er funktioniert auf meinen RELEASE-8.*Systemen.

http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/

G. Cito
quelle
-1

Es gibt ein Tool namens etckeeper. Ich habe keine Ahnung, wie gut es ist.

etckeeper ist eine Sammlung von Werkzeugen, mit denen / etc in einem git-, mercurial-, darcs- oder bzr-Repository gespeichert werden kann. Es ist mit apt (und anderen Paketmanagern, einschließlich yum und pacman-g2) verbunden, um Änderungen an / etc während Paket-Upgrades automatisch festzuschreiben. Es werden Dateimetadaten nachverfolgt, die von Revison-Steuerungssystemen normalerweise nicht unterstützt werden. Dies ist jedoch wichtig für / etc, z. B. für die Berechtigungen von / etc / shadow. Es ist ziemlich modular und konfigurierbar, aber auch einfach zu bedienen, wenn Sie die Grundlagen der Arbeit mit der Versionskontrolle verstehen.

Ich weiß auch nicht, ob es gemacht werden kann, um auf * BSD zu arbeiten Ich vermute, dass es könnte, aber dass es mit Anschlüssen von der Box nicht unterstützt wird.

Xenoterracid
quelle
1
Gilles benutzt bereits etckeeper.
Tante
@tante oh ich habe das verpasst
Xenoterracide