安装升级时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
数据库。