* BSD下/ etc的版本控制


14

存在哪些交钥匙解决方案可以/etc在各种环境下进行版本控制?交钥匙不一定意味着基本安装的一部分,但是以下功能会很不错:

  • 钩接到VCS命令中以管理元数据(所有权,权限);
  • 与软件包管理器集成(在安装之前和之后自动运行,智能处理升级);
  • 将上游文件版本视为分支;
  • 预填的忽略列表;
  • 支持多个基础VCS(尤其是分布式VCS)。

我在Debian及其衍生版本下使用etckeeper。它具有上述所有功能,只是它不跟踪上游版本。我想了解替代方法,尤其是在* BSD上。

Answers:


4

在Gentoo下,用于管理程序包引起的对/ etc的更改的工具(称为dispatch-conf)支持rcs来跟踪更改,但这并不是很强大。

我倾向于通过来对/ etc进行版本控制git,尤其是因为通过使用不同的分支,我可以使/ etc在不同的发行版上尽可能地相似,同时将尽可能多的内容保留在一个位置(对于某些显然失败的区域,apache配置例如,在不同的发行版之间确实有所不同)。它是这样的:

我有master默认配置文件的仓库。现在,我联系了一个新发行版,因此我根据发行版master的名称(在本示例中为debian),基于我的分支创建了一个新分支。Debian将一些配置文件保存在与我不同的位置,master所以我做了一个git mv file new_loc。一切都很好。我切换回master并更改该文件,因为我添加了一些特定的config指令,当我合并masterdebian分支中时,已移动的文件已更改,因此基本上我可以只更改master分支中的大多数内容,而只需合并“发行版”中的更改分支机构(通常它们通常是分发分支机构和目标分支机构的混合体,一个debian服务器与debian工作站显然有一些区别,但是这些功能仍然有效)。

因此,基本上我有一个“通用配置”,master并且(用面向对象的编程术语来说)将它们继承到我的分支中(它们也可以互相继承)。

除此之外,git在我只需要某些配置的某些部分的时候,“樱桃选择”提交的机制(在这种情况下,更改为/ etc /)对我很有帮助。

现在来谈谈您的一些想法:

  • 如果我需要更多的软件包管理器集成,我可能会为此使用包装器脚本(目前我不需要)。
  • 将上游版本视为一个分支可以与配合使用git,这只是您有时(部分)合并到的另一个分支master
  • git中的忽略列表是您仓库中的.gitignore文件,因此已被覆盖。

我更喜欢gentoo上的cfg-update比dispatch-conf更好,不幸的是前者没有得到维护。从我离开前大约一年开始,到处都是意大利面条perl,imo。
xenoterracide

3

我已经fossil成功地使用了它。有关更多信息,请参见我关于化石的文章。我还使用了一个称为的工具etcupdate,该工具更多地用于升级之间的移动而不是跟踪更改。我相信它原本打算成为一种辅助工具freebsd-update。我目前不确定它的状态,但是它可以在我的 RELEASE-8.*系统上运行。

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


-1

有一个叫做etckeeper的工具,我不知道它有多好。

etckeeper是一组工具,可以将/ etc存储在git,mercurial,darcs或bzr存储库中。它与apt(以及其他软件包管理器,包括yum和pacman-g2)挂钩,以在软件包升级期间自动提交对/ etc的更改。它跟踪版本控制系统通常不支持的文件元数据,但这对/ etc很重要,例如/ etc / shadow的权限。它非常模块化和可配置,如果您了解使用修订控制的基础知识,那么它也易于使用。

我也不知道它是否可以在* BSD上运行,但我怀疑它可以,但是开箱即用的端口将不支持它。


1
Gilles已经在使用etckeeper。
tante 2010年

@tante哦,我错过了
xenoterracide 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.