dpkg-query 占位符“文件名”、“MD5sum”和“大小”始终为空

dpkg-query 占位符“文件名”、“MD5sum”和“大小”始终为空

我目前正在尝试获取有关已安装的软件包和使用dpkg.所以我尝试使用dpkg-query.大多数占位符工作正常,我得到了我需要的东西,但是我注意到占位符Filename,MD5sumSize总是空的。

简单命令即可查看问题:

dpkg-query -W -f '"location":"${Filename}","md5":"${MD5sum}","size":"${Size}"\\n'

这将导致大量的行

"location":"","md5":"","size":""

答案1

正如中提到的联机帮助页,这些字段是“内部的、前端相关的”。事实上它们仅用于dselect.

这意味着默认情况下您不能依赖它们dpkg-query。它们对应于存储在“可用”数据库中的值/var/lib/dpkg/availabledpkg-query默认情况下仅考虑/var/lib/dpkg/status当前。--load-avail理论上,您可以添加选项来合并“可用”数据库中的信息 - 但这需要使用dselect作为您的软件包安装工具,因为/var/lib/dpkg/available仅通过dselect.如果您使用 APT,这将不起作用,如命令文档中所述-p

基于 APT 的前端的用户应apt-cache show package-name改为使用,因为该available文件仅在使用dselect.

如果我对以下字段的含义进行一些扩展,可能会有所帮助:FilenameMD5sumSize(和MSDOS-Filename)都提供有关包含包的文件的信息(其文件名、校验和和大小)。它们与包本身没有密切关系,因此status数据库不需要它们,也不存储它们。无论已安装或以其他方式安装的包,无论其包文件位于何处以及其特征是什么,都保持不变。该信息仅对检索包并将其提供给dpkg.

答案2

您可以使用grep-availablegrep-aptavail 工具代替(或者如上所述更好@斯蒂芬·基特):

grep-available -s  Filename,MD5sum,size -PX <package_name>

例子:

grep-available -s  Filename,MD5sum,size -PX dpkg

示例输出:

Filename: pool/main/d/dpkg/dpkg_1.18.24_amd64.deb
MD5sum: 5553b3fac608f5c4f9fa3ddbff18c2c5
Size: 2106696

相关内容