Hello All,<br>
<br>
Has anyone worked with rpm-python, i am kinda stuck in the addErase() function, Any help will be appreciated!<br>
<br>
Thanks,<br>
Vedanta<br>
<br>
Here is the code:<br>
<br>
#!/bin/env python<br>
import os,rpm,md5,sys<br>
<br>
class rpm_cb:<br>
    def __init__(self):<br>
        self.fdno={}<br>
<br>
<br>
    def callbackInstall(self, what, amount, total, mydata, wibble):<br>
        if what == rpm.RPMCALLBACK_TRANS_START:<br>
            pass<br>
        <br>
        elif what == rpm.RPMCALLBACK_INST_OPEN_FILE:<br>
            hdr, path = mydata<br>
            print "Installing %s\r" % (hdr["name"])<br>
            fdno = os.open(path, os.O_RDONLY)<br>
            nvr
= '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
            self.fdno[nvr] = fdno<br>
            return fdno<br>
        <br>
        elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:<br>
            hdr, path = mydata<br>
            nvr
= '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
            os.close(self.fdno[nvr])<br>
        <br>
        elif what == rpm.RPMCALLBACK_INST_PROGRESS:<br>
            hdr, path = mydata<br>
           
print "%s:  %.5s%% done\r" % (hdr["name"], (float(amount) / total)
* 100)<br>
            <br>
    def callbackRemove(self, what, amount, total, mydata, wibble):<br>
        if what == rpm.RPMCALLBACK_TRANS_START:<br>
            pass<br>
        <br>
        #elif what == rpm.RPMCALLBACK_INST_OPEN_FILE:<br>
        #    hdr, path = mydata<br>
        #    print "Installing %s\r" % (hdr["name"])<br>
        #    fdno = os.open(path, os.O_RDONLY)<br>
        #    nvr =
'%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
        #    self.fdno[nvr] = fdno<br>
        #    return fdno<br>
        <br>
        #elif what == rpm.RPMCALLBACK_INST_CLOSE_FILE:<br>
        #    hdr, path = mydata<br>
        #    nvr =
'%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
        #    os.close(self.fdno[nvr])<br>
        <br>
        elif what == rpm.RPMCALLBACK_UNINST_START:<br>
            <br>
        <br>
        elif what == rpm.RPMCALLBACK_INST_PROGRESS:<br>
            hdr, path = mydata<br>
           
print "%s:  %.5s%% done\r" % (hdr["name"], (float(amount) / total)
* 100)<br>
            <br>
<br>
class myrpm:<br>
    def queryInstalledPackage(self,rpmname):<br>
        ts = rpm.ts()<br>
        mi = ts.dbMatch("name",rpmname)<br>
        for hdr in mi:<br>
            print "%s-%s-%s" % (hdr['name'],hdr['version'],hdr['release'])<br>
<br>
    def queryInstalledPackages(self,pattern):<br>
        ts = rpm.ts()<br>
        mi = ts.dbMatch()<br>
        mi.pattern("name",rpm.RPMMIRE_GLOB,pattern)<br>
        for hdr in mi:<br>
            print "%s-%s-%s" % (hdr['name'],hdr['version'],hdr['release'])<br>
            <br>
    def queryPackage(self,rpmlocation):<br>
        ts = rpm.ts()<br>
        fdno=os.open(rpmlocation,os.O_RDONLY)<br>
        try:<br>
            hdr = ts.hdrFromFdno(fdno)<br>
        except:<br>
            fdno=os.open(rpmlocation,os.O_RDONLY)<br>
            ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)<br>
            hdr = ts.hdrFromFdno(fdno)<br>
        os.close(fdno)<br>
        print "%s-%s-%s : %s" %
(hdr['name'],hdr['version'],hdr['release'],hdr['description'])<br>
        <br>
    def install(self,rpmlocation):<br>
        ts = rpm.ts()<br>
        fdno=os.open(rpmlocation,os.O_RDONLY)<br>
        try:<br>
            hdr = ts.hdrFromFdno(fdno)<br>
        except:<br>
            fdno=os.open(rpmlocation,os.O_RDONLY)<br>
            ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)<br>
            hdr = ts.hdrFromFdno(fdno)<br>
        os.close(fdno)<br>
        ts.addInstall(hdr,(hdr,rpmlocation),"u")<br>
        cb=rpm_cb()<br>
        ts.run(cb.callbackInstall,'')<br>
        <br>
    def remove(self,rpmname):<br>
        ts = rpm.ts()<br>
        mi = ts.dbMatch(rpm.RPMTAG_NAME,rpmname)<br>
        mi.pattern(rpm.RPMTAG_ARCH,rpm.RPMMIRE_DEFAULT,"i386")<br>
        for idx in mi:<br>
            instance = mi.instance()<br>
            #ts.addErase(instance)<br>
            print type(instance);<br>
            <br>
        <br>
<br>
if __name__=="__main__":<br>
    x=myrpm()<br>
    <br>
    # query a particular installed package<br>
    #x.queryInstalledPackage(sys.argv[1])<br>
    <br>
    # query many installed packages using regex<br>
    #x.queryInstalledPackages(sys.argv[1])<br>
    <br>
    # query a package that exists in rpmlocation, but is not installed<br>
    #x.queryPackage(sys.argv[1])<br>
    <br>
    # install a package<br>
    #x.install(sys.argv[1])<br>
    <br>
    # uninstall a package<br>
    x.remove(sys.argv[1])<br>
<br><br>-- <br>*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*<br>Vedanta Barooah<br>YM! - vedanta2006<br>Skype - vedanta2006<br>