如何查看 Debian 中与软件包维护者版本不同的所有配置文件?

如何查看 Debian 中与软件包维护者版本不同的所有配置文件?

安装升级时sudo apt-get upgrade会显示:

Configuration file '/etc/grub.d/30_os-prober'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** defaults.list (Y/I/N/O/D/Z) [default=N] ?

但是,当我设置 GRUB 密码时,我更改了 /etc/grub.d/30_os-prober,现在我不知道该怎么办。最有可能做的最好的事情是获取包维护者的配置文件,然后进行相同的更改(合并文件)。

我在另一台机器上没有被问到这个问题,可能是因为无人值守升级完成了升级,或者因为我使用了 Apper(用于更新的 GUI)而不是控制台(为什么 Apper 不提示您?有问题吗?或与此相关的问题?)。它必须选择默认值,我想不更改配置文件以及更改配置文件有时会破坏一些东西。

如何显示与软件包维护者版本不同的所有配置文件?包含此配置文件的相应包也应该显示。我认为如果没有仅检索配置文件的命令,重新安装该包应该会再次显示有关配置文件的相同提示。

我更喜欢一种方法,可以使用 Diffuse Merge 或 Meld 之类的合并 GUI 轻松合并/更改/比较这些配置文件(按 D 时控制台中的差异视图几乎不可用)。

我使用的是 Debian11/KDE。

答案1

您可以使用以下命令找到大多数更改的配置文件:

debsums -ac

您可以进一步查询 dpkg 数据库以查找这些文件属于哪些包,如联机帮助页中所建议的debsums(1)

dpkg -S $(debsums -ac)

我不知道有什么方便的方法可以将“当前”配置文件的内容与“原始”文件的内容进行比较,特别是考虑到dpkg不保留配置文件的副本,并且默认情况下是最新版本成功安装的软件包的apt干净文件。.deb

请注意,它仅适用于包含在其包中的配置文件。

一些包宁愿在维护者脚本中为其配置文件生成默认内容,并用于ucf更新它们,同时保留本地更改。您可以使用以下命令找到已修改的内容:

md5sum --quiet --check /var/lib/ucf/hashfile

您可以知道哪个包创建了每个ucf托管配置文件,/var/lib/ucf/registry并且您可以在 中找到“原始”文件/var/lib/ucf/cache/。您还可以使用ucfq查询ucf数据库。

相关内容