发现与 conffile 有差异?

发现与 conffile 有差异?

假设某个包 foo...

$ apt-get install foo

..安装 dpkg blessed配置文件 /etc/foo.conf(即软件包维护者版本)

现在假设包安装后被/etc/foo.conf修改,也许要添加一行。

我们现在想要获取软件包维护者版本foo.conf和当前版本之间的差异(以查看进行了哪些本地配置更改)。

做到这一点最简单的方法是什么?

一种方法是将软件包安装在 chroot jail 中,然后将其与干净的 jail 进行差异处理。有没有更简单的方法?

答案1

升级软件包后,dpkg 将使用后缀保存其新的配置文件.dpkg-new(如果您选择保留自己的更改):

diff -u /etc/foo.conf /etc/foo.conf.dpkg-new

如果您选择覆盖您的配置文件,它将被重命名并获得后缀.dpkg-old:diff -u /etc/foo.conf.dpkgold /etc/foo.conf

正如 tumbleweed 所说,您也可以提取 .deb 文件。首先,您需要从某个地方获取 .deb 文件,然后才能提取它。如果您apt-get clean之前没有运行过,您应该已经有一个 .deb 文件,/var/cache/apt/archives/这意味着您可以跳过该apt-get download部分并相应地调整路径dpkg-deb -x

apt-get download foo
dpkg-deb -x foo_<version>_<arch>.deb fs
diff -u fs/etc/foo.conf /etc/foo.conf

答案2

您可以安装etckeeper。它使用 VCS 管理您的/etc目录,每次使用 apt 时都会自动提交。

或者,您可以提取 deb:,dpkg-deb -x foo.deb foo将其内容转储到foo目录中。

相关内容