如何知道配置文件属于哪个包?

如何知道配置文件属于哪个包?

debian中有两个主要的samba软件包:samba、samba-common。配置文件是/etc/samba/smb.conf,如何知道/etc/samba/smb.conf属于哪个软件包——samba或samba-common? (我已经知道它包含在 samba-common 中)

答案1

下面的文件/etc/通常不会直接在包中发布,而是由“维护者脚本”管理。这些都存储在/var/lib/dpkg/info;在安装期间运行的那些名称以inst.

首先要尝试的仍然是包搜索:

dpkg -S /etc/samba/smb.conf

在这种情况下,这不会找到任何东西。 (当此命令返回匹配项时,还要检查匹配的文件名,因为匹配可能是部分的。)

我们需要查看维护者脚本:

$ grep smb.conf /var/lib/dpkg/info/*inst
/var/lib/dpkg/info/samba-common-bin.postinst:        echo "Checking smb.conf with samba-tool"
/var/lib/dpkg/info/samba-common-bin.postinst:        echo "Checking smb.conf with testparm"
/var/lib/dpkg/info/samba-common.postinst:NEWFILE=$TEMPDIR/smb.conf
/var/lib/dpkg/info/samba-common.postinst:CONFIG=/etc/samba/smb.conf
/var/lib/dpkg/info/samba-common.postinst:configure_smb_conf() {
/var/lib/dpkg/info/samba-common.postinst:       configure_smb_conf "$CONFIG"
/var/lib/dpkg/info/samba-common.postinst:cp /usr/share/samba/smb.conf "$NEWFILE"
/var/lib/dpkg/info/samba-common.postinst:configure_smb_conf "$NEWFILE"
/var/lib/dpkg/info/samba-common.postinst:       echo " sudo cp /usr/share/samba/smb.conf $CONFIG"

该文件是由 创建的samba-common.postinst,因此负责它的包是samba-common。该软件包在 中提供了一个初始配置文件/usr/share/samba/smb.conf,并将其安装为/etc/samba/smb.conf;它用ucf如果合适的话,将用户设置(例如工作组名称)合并到其中,并处理升级时的更改。当包被清除时,删除维护者脚本负责删除/etc/samba/smb.conf以及由ucf.

相关内容