假设某个包 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
目录中。