为什么 `dpkg -S /var/lib/dpkg` 显示“base-files, dpkg”?

为什么 `dpkg -S /var/lib/dpkg` 显示“base-files, dpkg”?

我很好奇哪个包提供了这个/var/lib/dpkg目录,所以我运行了这个命令

$ dpkg -S /var/lib/dpkg
base-files, dpkg: /var/lib/dpkg

/var/lib/dpkg结果输出显示与base-files上述字符串一起提供的包。

$ dpkg -S /var/lib/aptitude
aptitude: /var/lib/aptitude
$ dpkg -S /var/lib/apt
apt: /var/lib/apt

但是我没有base-files在上面的输出中看到任何字符串。当然/var/lib/apt目录中的文件对于 Ubuntu 系统的运行也是必不可少的。

那么为什么dpkg -S /var/lib/dpkg命令显示“base-files,”字符串?为什么它没有显示在其他命令上?

答案1

您正在搜索目录,而不是特定的文件/二进制文件,因此任何包都可以安装目录内的文件:

➜  ~  dpkg -L dpkg | grep '/var/lib/dpkg'
/var/lib/dpkg
/var/lib/dpkg/info
/var/lib/dpkg/updates
/var/lib/dpkg/parts
/var/lib/dpkg/alternatives
➜  ~  dpkg -L base-files | grep '/var/lib/dpkg'
/var/lib/dpkg
➜  ~  

如您所见,base-files还创建了/var/lib/dpkg目录(确切的原因,我忽略了它,也许有一些文件现在已经被删除,但是更改日志没有给出任何明显的提示)和 dpkg 包,它除了是目录的所有者之外/var/lib/dpkg,还在其中安装了文件。

相关内容