我目前正在尝试获取有关已安装的软件包和使用dpkg
. 所以我尝试使用dpkg-query
. 大多数占位符都可以正常工作,我得到了我需要的东西,但是我注意到占位符Filename
,MD5sum
并且Size
总是空的。
查看问题的简单命令:
dpkg-query -W -f '"location":"${Filename}","md5":"${MD5sum}","size":"${Size}"\\n'
这将导致负载只是
"location":"","md5":"","size":""
如手册中所述,这些字段是“内部的,前端相关的”。实际上,它们仅用于
dselect
.dpkg-query
这意味着您不能在默认情况下依赖它们。它们对应于存储在“可用”数据库中的值/var/lib/dpkg/available
;dpkg-query
默认情况下只考虑/var/lib/dpkg/status
现在。理论上,您可以添加--load-avail
选项以合并“可用”数据库中的信息 - 但这需要dselect
用作您的软件包安装工具,因为/var/lib/dpkg/available
仅由dselect
. 如果您使用 APT,这将不起作用,如-p
命令文档中所述:如果我稍微扩展一下字段的含义可能会有所帮助:
Filename
和MD5sum
(Size
和MSDOS-Filename
)都提供有关包含包的文件的信息(其文件名、校验和和大小)。它们与包本身没有密切关系,因此status
数据库不需要它们并且不存储它们。无论其包文件位于何处以及其特征如何,一个包,无论是否安装,都保持不变。该信息仅对检索包并将其提供给dpkg
.您可以使用
grep-available
tool 代替(或者更好地grep-aptavail
提到@Stephen Kitt):例子:
样本输出: