rpm-Va的Python等价物

rpm-Va的Python等价物,python,centos,rpm,Python,Centos,Rpm,我需要查询rpm数据库以验证所有包。我可以通过命令行中的rpm-Va实现这一点,但是我有一个python二进制文件,它正在收集一些其他信息。我想知道是否有一个python等价物 我知道我可以使用subprocess.Popen[rpm,Va],但是命令行查询需要很长时间,所以我希望有一种更全面的python方法来完成它。我已经看过rpm python模块,但是我不太明白如何从文档中实现我想要做的事情 短暂性脑缺血发作 编辑:重新表述了一些内容rpm Python绑定不提供对执行rpm-VA的例程

我需要查询rpm数据库以验证所有包。我可以通过命令行中的rpm-Va实现这一点,但是我有一个python二进制文件,它正在收集一些其他信息。我想知道是否有一个python等价物

我知道我可以使用subprocess.Popen[rpm,Va],但是命令行查询需要很长时间,所以我希望有一种更全面的python方法来完成它。我已经看过rpm python模块,但是我不太明白如何从文档中实现我想要做的事情

短暂性脑缺血发作


编辑:重新表述了一些内容

rpm Python绑定不提供对执行rpm-VA的例程的直接绑定

在Python中实现rpm-Va有两种方法:

1直接从Python调用rpmlib中的例程。这种方法假设您可以设置需要正确传递的数据结构,但rpm本身就是这样做的

2使用现有的rpmdb标头检索机制和标记检索机制来获取在Python中执行验证所需的信息。请参阅lib/verify.c以了解头中包含的哪些信息是经过验证的


在yum或dnf中可能存在通过方法2进行验证的Python代码

我不能完全理解文档-您希望我们为您阅读文档吗?…嗯,也许吧。我想说的是,我不明白如何通过阅读文档来做我想做的事情。如果您知道文档中的某个地方说rpm-Va的等价物是xyz,我可能错过了它,希望您重复一下…或者至少是一个链接。您有任何理由相信rpm命令中内置的C实现比。。。好还有别的吗?如果您的Python使用librpm,它仍然在调用C。如果您有一些东西在本地Python中对大量文件进行校验和。。。好的,一个理性的人会期望它会更慢,除非你把它分成线程,如果你想这样做的话,你可以用命令行调用来做同样的事情,用N个进程,每个进程处理总包列表的1/N…,比如rpm-Qa | xargs-d$'\N'-p4rpm-V,如果你有4个CPU,f/e。未经测试;我手头没有任何基于RPM的发行版……但重点是,如果你的真正目标是找到一个比RPM-Va更快的替代品,你可能应该问问如何在上而不是在这里做到这一点,而不是假设Python rpm模块在某种程度上比主C实现的规范入口点的性能更好。