rpm-python help!!

Vedanta Barooah vedanta.barooah at gmail.com
Fri Apr 22 15:47:58 EDT 2005


Hello All,

Has anyone worked with rpm-python, i am kinda stuck in the addErase() 
function, Any help will be appreciated!

Thanks,
Vedanta

Here is the code:

#!/bin/env python
import os,rpm,md5,sys

class rpm_cb:
def __init__(self):
self.fdno={}


def callbackInstall(self, what, amount, total, mydata, wibble):
if what == rpm.RPMCALLBACK_TRANS_START:
pass

elif what == rpm.RPMCALLBACK_INST_OPEN_FILE:
hdr, path = mydata
print "Installing %s\r" % (hdr["name"])
fdno = os.open(path, os.O_RDONLY)
nvr = '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )
self.fdno[nvr] = fdno
return fdno

elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:
hdr, path = mydata
nvr = '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )
os.close(self.fdno[nvr])

elif what == rpm.RPMCALLBACK_INST_PROGRESS:
hdr, path = mydata
print "%s: %.5s%% done\r" % (hdr["name"], (float(amount) / total) * 100)

def callbackRemove(self, what, amount, total, mydata, wibble):
if what == rpm.RPMCALLBACK_TRANS_START:
pass

#elif what == rpm.RPMCALLBACK_INST_OPEN_FILE:
# hdr, path = mydata
# print "Installing %s\r" % (hdr["name"])
# fdno = os.open(path, os.O_RDONLY)
# nvr = '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )
# self.fdno[nvr] = fdno
# return fdno

#elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:
# hdr, path = mydata
# nvr = '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )
# os.close(self.fdno[nvr])

elif what == rpm.RPMCALLBACK_UNINST_START:


elif what == rpm.RPMCALLBACK_INST_PROGRESS:
hdr, path = mydata
print "%s: %.5s%% done\r" % (hdr["name"], (float(amount) / total) * 100)


class myrpm:
def queryInstalledPackage(self,rpmname):
ts = rpm.ts()
mi = ts.dbMatch("name",rpmname)
for hdr in mi:
print "%s-%s-%s" % (hdr['name'],hdr['version'],hdr['release'])

def queryInstalledPackages(self,pattern):
ts = rpm.ts()
mi = ts.dbMatch()
mi.pattern("name",rpm.RPMMIRE_GLOB,pattern)
for hdr in mi:
print "%s-%s-%s" % (hdr['name'],hdr['version'],hdr['release'])

def queryPackage(self,rpmlocation):
ts = rpm.ts()
fdno=os.open(rpmlocation,os.O_RDONLY)
try:
hdr = ts.hdrFromFdno(fdno)
except:
fdno=os.open(rpmlocation,os.O_RDONLY)
ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
hdr = ts.hdrFromFdno(fdno)
os.close(fdno)
print "%s-%s-%s : %s" % 
(hdr['name'],hdr['version'],hdr['release'],hdr['description'])

def install(self,rpmlocation):
ts = rpm.ts()
fdno=os.open(rpmlocation,os.O_RDONLY)
try:
hdr = ts.hdrFromFdno(fdno)
except:
fdno=os.open(rpmlocation,os.O_RDONLY)
ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
hdr = ts.hdrFromFdno(fdno)
os.close(fdno)
ts.addInstall(hdr,(hdr,rpmlocation),"u")
cb=rpm_cb()
ts.run(cb.callbackInstall,'')

def remove(self,rpmname):
ts = rpm.ts()
mi = ts.dbMatch(rpm.RPMTAG_NAME,rpmname)
mi.pattern(rpm.RPMTAG_ARCH,rpm.RPMMIRE_DEFAULT,"i386")
for idx in mi:
instance = mi.instance()
#ts.addErase(instance)
print type(instance);



if __name__=="__main__":
x=myrpm()

# query a particular installed package
#x.queryInstalledPackage(sys.argv[1])

# query many installed packages using regex
#x.queryInstalledPackages(sys.argv[1])

# query a package that exists in rpmlocation, but is not installed
#x.queryPackage(sys.argv[1])

# install a package
#x.install(sys.argv[1])

# uninstall a package
x.remove(sys.argv[1])


-- 
*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*
Vedanta Barooah
YM! - vedanta2006
Skype - vedanta2006
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20050423/7dd9060f/attachment.html>


More information about the Python-list mailing list