Re: Transaction Set clean does not actually clean

Mitko Haralanov <[email protected]> Fri, 7 Dec 2007 15:26:16 -0800
Newsgroups gmane.linux.redhat.rpm.python
Organization QLogic Corporation
Message-ID <[email protected]>
On Fri, 7 Dec 2007 18:08:42 -0500
Jeff Johnson <[email protected]> wrote:

> OK, so you want ts.clean() to "work".
> 
> Translating python -> C, the binding is just a wrapper onto
>      rpmtsClean().
> 
> Why do you think rpmtsClean is not "cleaning", as in removing
> all the references from the transaction set to the transaction elements
> (aka packages) in the transaction set?

First off, let me say that I agree with you that getting this to work
the way I am going about it is swimming against a current!

However, I went that route because I can't seem to get ts.clean() to
"work". I looked at the C code for the Python module and, yes,
rpmtsClean should be doing the right thing.

However, I believe it isn't: I have an application that creates an
instance of my rpm wrapper class and sits there waiting for "commands".
If I ask the application to install a set of rpms (which it does
successfully) and then, at a later time, ask it to install a new
version of the previous set, I get TransactionSet conflicts because the
TransactionSet is attempting to install the same files from two
different versions of the same rpm (in the same transaction). In other
words, I get the same error that I would get if I try to do the
following on the command line:
	rpm -Uv rpmA-1.2.rpm rpmA-1.3.rpm

The only way that this could be happening is if the ts.clean() which is
done after every "install" command doesn't actually clean the
TransasctionSet.

On a different note: is there a way that I could print out the content
of the current TransactionSet before I run the run() method? That way,
I could verify whether I really have stale transactions.

Thanks for all your help!
-- 
Mitko Haralanov					 [email protected]
Senior Software Engineer			     650.934.8064
System Interconnect Group		    http://www.qlogic.com

==========================================
Say "twenty-three-skiddoo" to logout.