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