哪个包提供了某个配置文件?

chz*_*zzh 6 debian dpkg apt

是否有类似的 for dpkg -S <file>, 但对于配置文件,例如/etc/samba/smb.conf? dpkg-reconfigure我猜是在 上生成的。

user@host:~$ dpkg -S /etc/samba/smb.conf
dpkg-query: no path found matching pattern /etc/samba/smb.conf
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 10

dpkg -S只会找到直接在包中提供的配置文件,而不是由维护者脚本(或其他工具)生成的配置文件。后者没有通用的解决方案,但查找对文件的引用/var/lib/dpkg/info是您最好的选择。在这种情况下:

$ grep -rl /etc/samba/smb.conf /var/lib/dpkg/info
/var/lib/dpkg/info/samba-common.config
/var/lib/dpkg/info/samba-common.postinst
/var/lib/dpkg/info/samba-common.postrm
/var/lib/dpkg/info/samba-common.templates
Run Code Online (Sandbox Code Playgroud)

这表明该文件由samba-common; 阅读postinst文件将确认这一点。


Gar*_*aro 6

Stephen Kitt 的答案可能是最好的,但如果你找不到那样的,你也可以尝试etckeeper. 这不是默认安装在 Debian 和 Ubuntu 上,但它在 repo 中,所以apt install etckeeper应该很简单。

Etckeeper 将您/etc置于 (git) 版本控制之下。它所做的一件事是每次安装/更新软件包时自动提交。

现在您可以使用cd /etc && sudo git blame somefile查看它的调整时间并在/var/log/dpkg*

这是很多工作,但是当dpkg -S找不到它时它应该可以工作。