根据提出的建议将 /etc 置于源代码管理之下我已经安装了 ETCKEEPER。
看起来不错,但我有一些问题。
有没有办法将你执行的命令放入更改消息中。所以如果我运行apt-get 安装小部件我希望提交消息的第一行类似于安装小部件而不是不太有帮助在 apt 运行后提交 /etc 中的更改
我希望能够以普通用户的身份查询 bzr 存储库。但我被.bzr目录。将其更改为一个+R
drwx------ 6 root root 4096 8月30日 13:00 .bzr
删除文件(例如从 etckeeper 控制中删除 /etc/shadow/)时是否存在任何问题
答案1
如果你查看完整的 bzr 日志而不是简短日志,你会看到在 apt 运行后提交 /etc 中的更改接下来是已更改软件包的列表。至少,这是我的 Ubuntu 笔记本电脑和服务器上的行为。对于绝大多数情况,我怀疑这比“sudo apt-get upgrade”提交消息更有用。
您无法以普通用户身份访问 bzr 日志的原因是 bzr 存储库对影子存储库具有完全访问权限。阻止这种情况的最大问题可能是,如果您从 bzr 存储库中删除文件,该文件仍可在旧版本中使用。您可能可以使用一些类似于svndumpfilter | svnadmin --import
但适用于 bzr 的巫术,但我还没有尝试过。
您可以尝试的一种替代方法是sudo su
。或者您可以创建一个新用户和组,将用户放入该组中,授予该组对 .bzr 的访问权限,并su
授予该用户 bzr 感兴趣的操作的访问权限。
答案2
有没有办法将您执行的命令放入更改消息中。
了解 etckeeper 的工作原理意味着您必须了解版本控制系统的工作原理。使用 VCS 系统,您会有存储库的概念,基本上是所有更改的数据库,是您当前正在更改内容的工作目录。
Etckeeper 实际上可以使用多种 DVCS 后端之一,它可以支持 bzr、git 和 hg。无论您使用哪种后端,其工作原理都大致相同。我使用 git 作为后端,因为我对 git 更熟悉。
使用 Etckeeper,您的工作目录几乎总是/etc
,尽管您可以将其用于其他目录。当有关工作目录当前状态的所有内容都已提交时,您的工作目录将被视为干净的。如果您对某个文件进行了更改,并希望将更改提交到存储库,请运行该命令etckeeper commit "Your log message here"
。您可以通过运行以下命令来检查存储库是否处于干净状态etckeeper unclean && echo $
。
在了解了背景知识后,我可以介绍如何通过挂钩帮助您跟踪 apt 的操作。安装 etckeeper 时,会将配置文件添加到 apt 配置中/etc/apt/apt.conf.d/05etckeeper
。这会设置一些挂钩,因此当要求 apt 安装软件包时,它将在安装开始之前运行命令,并在安装完成后运行命令。要确切了解安装前和安装后命令的作用,请查看和目录中的/etc/etckeeper/pre-install.d
脚本/etc/etckeeper/post-install.d
。
基本上,如果您的工作目录不干净,预安装命令将执行提交。如果您不喜欢这样,您只需记住在更改任何内容后手动运行提交即可。如果您强烈反对自动提交,您可以调整文件/etc/etckeeper/etckeeper.conf
并取消注释该AVOID_COMMIT_BEFORE_INSTALL=1
行。进行此更改意味着您将被迫手动提交,然后才能运行 apt。如果您真的不喜欢自动提交,您可能还想禁用较新版本中存在的每日自动提交。
我希望能够以普通用户的身份查询 bzr 存储库。
在我看来,这是一个非常糟糕的想法。/etc 中有许多文件不应该被最终用户读取。如果你想让你的生活更轻松,你可以设置 sudo 以在使用 bzr 或 etckeeper 时不提示你的帐户输入密码。
删除文件(例如从 etckeeper 控制中删除 /etc/shadow/)时是否存在任何问题
正确的做法是使用您选择的 DVCS 后端的忽略功能。如果您使用 git,您会将文件添加到您的/etc/.gitignore
,我相信应该有一个/etc/.bzrignore
可以做同样的事情,但您可能需要 bzr 专家为您确认。就我个人而言,我认为我喜欢跟踪文件,/etc/shadow
因为它可以让我知道是否有邪恶的人设法修改了应该具有禁用密码的服务帐户,使其具有允许其用于登录的密码。