gpt4 book ai didi

linux - 如何读取 var/lib/rpm/Packages 内容

转载 作者:行者123 更新时间:2023-12-03 09:58:49 24 4
gpt4 key购买 nike

我在基于 Centos:8 的镜像中的路径 var/lib/rpm 中有“Packages”文件。如何读取/获取“Packages”文件内容

正如我在一些文档中读到的,该文件属于 berkeley DB 类型。对此我不确定。

最佳答案

您可以像下面这样使用“rpm”python 库,它输出与以下相同的结果

rpm -qa --dbpath /some/path/to/rpm/db

JSON 格式

您现在可以忽略 _db_backend,因为它的唯一值是“bdb”

import sys
import rpm
import json

if (len(sys.argv) != 3):
print ('invalid amount of input arguments!')
sys.exit()

# user inputs
dbtype = sys.argv[1]
dbpath = sys.argv[2]

# add macro to be used by rpm
rpm.addMacro("_db_backend", dbtype)
rpm.addMacro("_dbpath", dbpath)

# Open database
ts = rpm.TransactionSet()
ts.openDB()

# remove macro for future cases
rpm.delMacro("_db_backend")
rpm.delMacro("_dbpath")

allPackages = []
# retrieve all packages from BDB
mi = ts.dbMatch()

# build JSON object from all packages for easier parsing
for hdr in mi:
pkgDict = {}
allPackages.append(pkgDict)
pkgDict['NAME'] = hdr[rpm.RPMTAG_NAME]
pkgDict['VERSION'] = hdr[rpm.RPMTAG_VERSION]
pkgDict['RELEASE'] = hdr[rpm.RPMTAG_RELEASE]
pkgDict['ARCH'] = hdr[rpm.RPMTAG_ARCH]

print (json.dumps(allPackages))

关于linux - 如何读取 var/lib/rpm/Packages 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59281720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com