我的问题源于反复出现的情况,例如:我在最近更新的 Debian 安装中找到了一个文件 (/etc/modprobe.d/radeon-kms.conf),并且我注意到该文件不应再存在 (xserver-xorg -video-radeon 软件包自 2015 年以来已删除该文件)文件仍然存在于其路径中。
所以,当我执行命令时
dpkg -S /etc/modprobe.d/radeon-kms.conf
dpkg 将其归因于包 xserver-xorg-video-radeon 和
dpkg -L xserver-xorg-video-radeon
在作为输出生成的列表末尾显示该路径。
但这个文件不是最近的软件包的一部分事实上,在另一个安装上,更新鲜但同样更新,这种情况不会发生。 dpkg -L xserver-xorg-video-radeon 不在其列表中显示该文件。
如何从声明为包拥有的文件和包真正包含的文件中找到其他不匹配的情况?或者,我如何查询 dpkg/apt 来知道原始包仍然覆盖路径?
答案1
该文件不属于包。文件可以由软件包安装程序创建,但之后它只是一个文件。软件包删除程序会根据软件包中提到的文件列表进行删除。
如果一个包的新版本不知道某个文件是同一包的先前版本的一部分 - 就是这样。除非您通过其他方式(历史文档或找到旧版本的软件包)自己了解到这一点 - 您有一个真正的孤儿。
但是,您可以获取现有包中的文件列表:
dpkg --listfiles <package>
通过对所有已安装的软件包运行此命令,您可以获得必须保留的文件列表。因此,从实际拥有的文件列表中减去该列表,您可以获得潜在的孤立文件列表。但它们是真实的还是由某些应用程序编写的这些文件(作为配置文件,作为某些数据文件甚至来自不同包的文件) - 这将是一个需要解决的谜。