Skip to content

Latest commit

 

History

History
81 lines (66 loc) · 1.79 KB

README.md

File metadata and controls

81 lines (66 loc) · 1.79 KB

A python package that extracts rpm package information from rpm database.

Why this and not "rpm" I needed a package that could run on environment without rpm shared libraries installable. This leverage go's portability to enable this.

Example usage

from pyrpmdb import get_rpm_db_info
import json


def test_get_info(file):
    res = get_rpm_db_info(file)
    print(json.dumps(res, indent=4))


test_get_info("foo/bar")
test_get_info("/usr/bin/du")
test_get_info("test-data/centos5-plain-Packages")

The result returned is always a dict object for errors the dictionary returned contains a key; "error" like;

{
    "error": "path error:foo/bar"
}

or

{
    "error": "/usr/bin/du: could not read Go build info from /usr/bin/du: unrecognized file format"
}

on success a python list of rpm package info struct is returned of this go structure serialized

{
    Name            string
    Version         string
    Release         string
    Arch            string
    SourceRpm       string
    Size            int
    License         string
    Vendor          string
    Modularitylabel string
    Summary         string
    PGP             string
    SigMD5          string
    InstallTime     int
    BaseNames       []string
    DirIndexes      []int32
    DirNames        []string
    FileSizes       []int32
    FileDigests     []string
    FileModes       []uint16
    FileFlags       []int32
    UserNames       []string
    GroupNames      []string
    
    Provides []string
    Requires []string
}
[
    {
        "Name": "package_name",
        "Version": "version",
        "Release": "blah"
    }
]

This spackage relies on a shared go library that leverages https://pkg.go.dev/github.com/knqyf263/go-rpmdb/pkg

So relies on this for database support.