“dpkg -l“*””在哪里收集其信息?

“dpkg -l“*””在哪里收集其信息?

据我了解,dpkg -l "*"Debian 下列出了所有可用的软件包,无论其状态如何。这些信息从哪里来?我知道它/var/lib/dpkg/available列出了所有已安装的软件包(状态ii),但是从哪里获取dpkg有关所有其他软件包的信息?

答案1

我检查这些事情的方法是在 的控制下运行实用程序strace,例如:

$ strace -o /tmp/dpkg-strace.out dpkg -l '*'

strace跟踪系统调用的所有使用情况,因此可以轻松查看访问了哪些文件。 grep 系统调用的输出文件open,凭借一些经验,您可以很快看到在这种情况下相关的 strace 行是:

open("/var/lib/dpkg/status", O_RDONLY)  = 3

因此/var/lib/dpkg/status,文件dpkg从中获取信息。它基本上是一个纯文本文件(按照 RFC2822 进行格式化),因此您可以使用less或类似的命令查看它。

相关内容