python - 关于Python中的rpm模块

标签 python rpm

我查找了一些信息,rpm模块只能用于搜索已安装的rpm包信息。我想使用python rpm模块搜索文件夹中的*.rpm文件并了解其信息,例如版本或版本。是这可以使用 rpm 模块吗?

最佳答案

如果有人在寻找答案时仍然来到这里,请使用以下方法使用 python-rpm:

import os
import rpm

fdno = os.open(PATH_TO_RPM_FILE, os.O_RDONLY)
ts = rpm.ts()
hdr = ts.hdrFromFdno(fdno)
os.close(fdno)

(注意对 os.close() 的调用)

现在hdr保存RPM头信息。您可以使用 RPMTAG_* 值作为键来访问字典样式的各个属性,例如:

arch = hdr[rpm.RPMTAG_ARCH]

您可以尝试使用 dir() 对所有可能的 RPMTAG_* 值进行逆向工程:

import rpm
print '\n'.join(filter(lambda x: x.startswith('RPMTAG'), dir(rpm)))

您还可以在 hdr 上调用 keys(),但它会以整数形式返回可能的键,这可能不太友好。

我发现,当要处理大量 RPM 文件时,使用 python-rpm 而不是将命令行工具作为子进程调用,可以显着提高性能。

有关更多信息,请参阅http://rpm5.org/docs/api/classRpmhdr.html

关于python - 关于Python中的rpm模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14461975/

相关文章:

python - 反转附加列表或前置列表是否更便宜? - Python

mysql - 如何避免 CentOS 中的 MySQL 安装警告 (Header V3 DSA/SHA1 Signature, key ID <hash> : NOKEY)

linux - 如何获取 RPM 包的源代码

rpm - 如何在 yum 中更新特定的 repo?

python - Python 3.6.4中使用Urllib下载图像

python - 如何实时读取/写入原始音频数据(使用 python)?

linux - 如何在 CentOS 6 上升级到 CouchDB 1.3.0+?

centos - 已安装 Salt Stack : Function: pkg.。 yum 不更新已安装的包

python - SQLAlchemy:可以急切加载延迟列吗?

python - Keras Conv1D 或 Convolution1D