[Yum] updating to one multiple package versions

David Ressman davidr at mcs.anl.gov
Thu Aug 2 22:07:30 UTC 2007


Hello,

I've been looking through the archives for quite some time and haven't 
been able to answer my question, so I thought I'd ask the list. Here's a 
little bit of background about my setup and about what I'm trying to 
accomplish:

For various and unpleasant reasons, I'm mirroring the up2date service 
for RHEL4 to yum (2.6.1). Functionally speaking, it's set up identically 
to the Fedora yum repositories; I've got a "base" repository with the 
packages from the original distribution, and whenever I run up2date on 
the yum server, it downloads the new RPMs into the "updates" repository 
and rebuilds the "updates" repo metadata.

My problem is that I'd like to be able to upgrade to any version of a 
particular package from a lesser version of that package, and not 
necessarily the newest version of the package. Here's an example of what 
I'm talking about:

RHAS4(u4) ships with version qt-3.3.3-9.3.x86_64. Since the OS release, 
qt has been updated to qt-3.3.3-10.RHEL4.x86_64 and then again to 
qt-3.3.3-11.RHEL4.x86_64. As it is now, I've got both of the new qt RPMs 
in the updates directory, and the yum metadata files are built accordingly.

If I'm on a box with qt-3.3.3-9.3.x86_64 installed, and I want to go to 
qt-3.3.3-11.RHEL4.x86_64, I can do the following:

   yum install qt-3.3.3-11.RHEL4.x86_64
   yum update qt.x86_64
   etc., etc.

What I can't figure out how to do is to upgrade to 
qt-3.3.3-10.RHEL4.x86_64 once qt-3.3.3-11.RHEL4.x86_64 is added to the 
repository. If I do "yum install qt-3.3.3-10.RHEL4.x86_64" or something 
similar, I get the "Could not find update match for 
qt-3.3.3-10.RHEL4.x86_64" error from cli.py.

After some digging around, I see that yum is being returned only the 
newest version of the qt utility from a call to 
rpmUtils.updates.reduceListNewestByNameArch.

Because of that, this behavior seems very deeply rooted in the yum 
update function, and it looks to me like there's not a particularly easy 
way to do what I want. If I specifically exclude 
"qt-3.3.3-11.RHEL4.x86_64" on the yum command line, 
reduceListNewestByNameArch() returns the one I want, but this is very 
cumbersome. I don't really want to have to specifically exclude every 
package version that's newer than the one to which I want to upgrade.

Obviously, if I remove qt and then run a "yum install 
qt-3.3.3-10.RHEL4.x86_64", it works fine, but that's not a very robust 
way to upgrade RPMs.

Is this a problem that other people have dealt with? I looked to see if 
there's something in yum 3.x that would help me out (I'm not really 
anxious to upgrade from 2.6), but I don't see anything. Am I stuck with 
specifically excluding every other version of the package that happens 
to be in the "updates" repo? Is there something simple I'm missing?

Thanks very much!

David Ressman




More information about the Yum mailing list