addErase() help!

Vedanta Barooah <[email protected]> Thu, 21 Apr 2005 17:06:52 +0530
Newsgroups gmane.linux.redhat.rpm.python
Message-ID <[email protected]>
--===============1013417562==
Content-Type: multipart/alternative; 
	boundary="----=_Part_129_19548687.1114083412040"

------=_Part_129_19548687.1114083412040
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello Every One!

I am writing a wrapper class using rpm-python, but some how i am not able t=
o=20
uninstall an installed package using the addErase() function. Any help in=
=20
this regard will be great.=20

I am also trying to display the progress during the erase process.... see=
=20
callbackRemove() below, any help on this would be great.

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

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


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

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

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

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

def callbackRemove(self, what, amount, total, mydata, wibble):
# help needed here
##############################################

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

def queryInstalledPackages(self,pattern):
ts =3D rpm.ts()
mi =3D 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 =3D rpm.ts()
fdno=3Dos.open(rpmlocation,os.O_RDONLY)
try:
hdr =3D ts.hdrFromFdno(fdno)
except:
fdno=3Dos.open(rpmlocation,os.O_RDONLY)
ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)
hdr =3D ts.hdrFromFdno(fdno)
os.close(fdno)
print "%s-%s-%s : %s" %=20
(hdr['name'],hdr['version'],hdr['release'],hdr['description'])

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

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



if __name__=3D=3D"__main__":
x=3Dmyrpm()

# 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])


--=20
*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*
Vedanta Barooah
YM! - vedanta2006
Skype - vedanta2006
Cell - 9886080415

------=_Part_129_19548687.1114083412040
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello Every One!<br>
<br>
I am writing a wrapper class using rpm-python, but some how i am not
able to uninstall an installed package using the addErase() function.
Any help in this regard will be great. <br>
<br>
I am also trying to display the progress during the erase process....
see callbackRemove() below, any help on this would be great.<br>
<br>
Thanks,<br>
Vedanta<br>
------------------------------------------------------------<br>
#!/bin/env python<br>
import os,rpm,md5,sys<br>
<br>
class rpm_cb:<br>
&nbsp;&nbsp;&nbsp; def __init__(self):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.fdno=3D{}<br>
<br>
<br>
&nbsp;&nbsp;&nbsp; def callbackInstall(self, what, amount, total, mydata, w=
ibble):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if what =3D=3D rpm.RPMCALLBACK_T=
RANS_START:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pass<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif what =3D=3D rpm.RPMCALLBACK=
_INST_OPEN_FILE:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr, pat=
h =3D mydata<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &q=
uot;Installing %s\r&quot; % (hdr[&quot;name&quot;])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fdno =3D=
 os.open(path, os.O_RDONLY)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvr
=3D '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; self.fdn=
o[nvr] =3D fdno<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return f=
dno<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif what =3D=3D rpm.RPMCALLBACK=
_INST_CLOSE_FILE:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr, pat=
h =3D mydata<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nvr
=3D '%s-%s-%s' % ( hdr['name'], hdr['version'], hdr['release'] )<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close=
(self.fdno[nvr])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elif what =3D=3D rpm.RPMCALLBACK=
_INST_PROGRESS:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr, pat=
h =3D mydata<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
print &quot;%s:&nbsp; %.5s%% done\r&quot; % (hdr[&quot;name&quot;], (float(=
amount) / total)
* 100)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; def callbackRemove(self, what, amount, total, mydata, wi=
bble):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # help needed here<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ################################=
##############<br>
<br>
class myrpm:<br>
&nbsp;&nbsp;&nbsp; def queryInstalledPackage(self,rpmname):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts =3D rpm.ts()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi =3D ts.dbMatch(&quot;name&quo=
t;,rpmname)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for hdr in mi:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print &quot;%s-%s-=
%s&quot; % (hdr['name'],hdr['version'],hdr['release'])<br>
<br>
&nbsp;&nbsp;&nbsp; def queryInstalledPackages(self,pattern):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts =3D rpm.ts()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi =3D ts.dbMatch()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.pattern(&quot;name&quot;,rpm.=
RPMMIRE_GLOB,pattern)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for hdr in mi:<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; print &quot;%s-%s-=
%s&quot; % (hdr['name'],hdr['version'],hdr['release'])<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; def queryPackage(self,rpmlocation):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts =3D rpm.ts()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fdno=3Dos.open(rpmlocation,os.O_=
RDONLY)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr =3D =
ts.hdrFromFdno(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fdno=3Do=
s.open(rpmlocation,os.O_RDONLY)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.setVS=
Flags(rpm._RPMVSF_NOSIGNATURES)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr =3D =
ts.hdrFromFdno(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print &quot;%s-%s-%s : %s&quot; =
%
(hdr['name'],hdr['version'],hdr['release'],hdr['description'])<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; def install(self,rpmlocation):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts =3D rpm.ts()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fdno=3Dos.open(rpmlocation,os.O_=
RDONLY)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr =3D =
ts.hdrFromFdno(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; except:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fdno=3Do=
s.open(rpmlocation,os.O_RDONLY)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.setVS=
Flags(rpm._RPMVSF_NOSIGNATURES)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hdr =3D =
ts.hdrFromFdno(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; os.close(fdno)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.addInstall(hdr,(hdr,rpmlocati=
on),&quot;u&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cb=3Drpm_cb()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.run(cb.callbackInstall,'')<br=
>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; def remove(self,rpmname):<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts =3D rpm.ts()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi =3D ts.dbMatch(rpm.RPMTAG_NAM=
E,rpmname)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mi.pattern(rpm.RPMTAG_ARCH,rpm.R=
PMMIRE_DEFAULT,&quot;i386&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for idx in mi:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; instance=
 =3D mi.instance()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ts.addEr=
ase(instance)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print ty=
pe(instance);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
if __name__=3D=3D&quot;__main__&quot;:<br>
&nbsp;&nbsp;&nbsp; x=3Dmyrpm()<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # query a particular installed package<br>
&nbsp;&nbsp;&nbsp; #x.queryInstalledPackage(sys.argv[1])<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # query many installed packages using regex<br>
&nbsp;&nbsp;&nbsp; #x.queryInstalledPackages(sys.argv[1])<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # query a package that exists in rpmlocation, but is not=
 installed<br>
&nbsp;&nbsp;&nbsp; #x.queryPackage(sys.argv[1])<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # install a package<br>
&nbsp;&nbsp;&nbsp; #x.install(sys.argv[1])<br>
&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp; # uninstall a package<br>
&nbsp;&nbsp;&nbsp; x.remove(sys.argv[1])<br>
<br><br>-- <br>*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*~:~*<br>Vedanta Barooah=
<br>YM! - vedanta2006<br>Skype - vedanta2006<br>Cell - 9886080415

------=_Part_129_19548687.1114083412040--

--===============1013417562==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Rpm-python-list mailing list
[email protected]
https://lists.dulug.duke.edu/mailman/listinfo/rpm-python-list

--===============1013417562==--