Answers:
在Gentoo下,用于管理程序包引起的对/ etc的更改的工具(称为dispatch-conf)支持rcs来跟踪更改,但这并不是很强大。
我倾向于通过来对/ etc进行版本控制git
,尤其是因为通过使用不同的分支,我可以使/ etc在不同的发行版上尽可能地相似,同时将尽可能多的内容保留在一个位置(对于某些显然失败的区域,apache配置例如,在不同的发行版之间确实有所不同)。它是这样的:
我有master
默认配置文件的仓库。现在,我联系了一个新发行版,因此我根据发行版master
的名称(在本示例中为debian),基于我的分支创建了一个新分支。Debian将一些配置文件保存在与我不同的位置,master
所以我做了一个git mv file new_loc
。一切都很好。我切换回master
并更改该文件,因为我添加了一些特定的config指令,当我合并master
到debian
分支中时,已移动的文件已更改,因此基本上我可以只更改master
分支中的大多数内容,而只需合并“发行版”中的更改分支机构(通常它们通常是分发分支机构和目标分支机构的混合体,一个debian服务器与debian工作站显然有一些区别,但是这些功能仍然有效)。
因此,基本上我有一个“通用配置”,master
并且(用面向对象的编程术语来说)将它们继承到我的分支中(它们也可以互相继承)。
除此之外,git
在我只需要某些配置的某些部分的时候,“樱桃选择”提交的机制(在这种情况下,更改为/ etc /)对我很有帮助。
现在来谈谈您的一些想法:
git
,这只是您有时(部分)合并到的另一个分支master
我已经fossil
成功地使用了它。有关更多信息,请参见我关于化石的文章。我还使用了一个称为的工具etcupdate
,该工具更多地用于升级之间的移动而不是跟踪更改。我相信它原本打算成为一种辅助工具freebsd-update
。我目前不确定它的状态,但是它可以在我的 RELEASE-8.*
系统上运行。
http://lists.freebsd.org/pipermail/freebsd-current/2010-June/017927.html http://people.freebsd.org/~jhb/etcupdate/
有一个叫做etckeeper的工具,我不知道它有多好。
etckeeper是一组工具,可以将/ etc存储在git,mercurial,darcs或bzr存储库中。它与apt(以及其他软件包管理器,包括yum和pacman-g2)挂钩,以在软件包升级期间自动提交对/ etc的更改。它跟踪版本控制系统通常不支持的文件元数据,但这对/ etc很重要,例如/ etc / shadow的权限。它非常模块化和可配置,如果您了解使用修订控制的基础知识,那么它也易于使用。
我也不知道它是否可以在* BSD上运行,但我怀疑它可以,但是开箱即用的端口将不支持它。