[Yum] Can Yum install multiple versions of the same RPM?

Michael E Brown Michael_E_Brown at dell.com
Mon May 7 15:17:47 UTC 2007

On Mon, May 07, 2007 at 12:22:01AM -0400, John Rouillard wrote:
> On Wed, May 02, 2007 at 02:28:41PM -0400, John Rouillard wrote:
> > So the only way to really make sure that packages won't be lost from
> > the database is to check the install mode in a pre-scriptlet. With
> > rpm, you can search for the parent process of the pre scriptlet and
> > look for -i or --install on the command line. In yum there is no such
> > method.
> > 
> > So if somebody screws up the yum conf file and you accidently get an
> > upgrade rather then a true install... well it's bad.
> > 
> > My idea was to set an environment variable YUM_MODE='install' or
> > 'upgrade' as each package is installed that is available to the
> > scriptlets so it could easily check to see what mode it was being
> > installed. However I haven't had any luck doing that either with the
> > core code or via a plugin in the pretrans_hook.
> > 
> > I think the pretrans hook should work as I think it is called for
> > every package that is up be upgraded (c.f. rpm's pretrans scriptlet),
> > but it's not explicit from the documentaion
> > http://wiki.linux.duke.edu/WritingYumPlugins what the scope of the rpm
> > transaction is, I assume package by package.
> Hi all:
> Just for the record, with yum-2.4.3-1 in centos 4, the pretrans_hook
> is called only before all packages are installed. It is not called for
> each package in the sack that is to be installed. So this route isn't
> fruitful.
> Indeed it is starting to look to me that there is no way to do this as
> I think the function/callback that does the install is in
> rpmmodule.so. The function is passed the entire sack of rpm's to
> install and only in that shared object is the sack broken up into
> seperate rpms, and the rpm pre scripts are called. Which would also
> explain why I can't seem to find the location in the pythin code where
> the scriptlet is run. This would make me feel better. I am a novice
> with python, but I think I know enough that I should be able to find
> the invocation of a shell script in the code.
> Can anybody confirm that the sack is unpacked and installed by
> functions in the shared object? If so I guess I can give up on using
> yum to install the packages and need to figure out some other
> mechanism. Maybe I can still use yum to download the rpms, that will
> save some work at least.

For this verison of yum, what you have outlined is basically correct.
One of the other developers can comment a bit more, you can also read
past discussions on the mailing list where other people have
discovered the same.

More information about the Yum mailing list