RPM Control from Python

shaneal smanek at gmail.com
Wed Aug 13 14:50:09 EDT 2008


Hello,

I'm trying to script some sysadmin stuff, that requires rpm
manipulation (querying installed packages, removing packages,
installing packages).

Rather than manually parsing rpm's output, I noticed that someone had
written python-bindings for the rpmlib library (called rpm-python).
This seems much cleaner, but the documentation is sparse, and I
haven't been able to get uninstalling to work.

As root, I run the following:

>>> import rpm
>>> ts=rpm.ts()
>>> ts.addErase("lynx")
>>>

I get no error messages/exceptions, but lynx is not removed.

I've also tried things along the lines of:

>>> mi = ts.dbMatch(rpm.RPMTAG_NAME, "lynx")
>>> for idx in mi:
...     instance = mi.instance()
...     ts.addErase(instance)

and

>>> mi = ts.dbMatch(rpm.RPMTAG_NAME, "lynx")
>>> for idx in mi:
...     ts.addErase(idx)

I've further confirmed that ts.dbMatch(rpm.RPMTAG_NAME, "lynx") does
in fact find the header for the lynx package via something like:
>>> mi = ts.dbMatch(rpm.RPMTAG_NAME, "lynx")
>>> for hdr in mi:
...     print hdr['name'], hdr['version']
...
lynx 2.8.5

The only real documentation I've been able to find is
http://people.redhat.com/pnasrat/rpm-python/rpm-python-slides/frames.html

Is there some other module I should be using for rpm manipulation? Or,
if not, does anyone know what I'm doing wrong with this one?



More information about the Python-list mailing list