Red Hat Bugzilla – Bug 64017
RPM 4.0.4-7 update breaks pkgorder and requires constant cd swapping
Last modified: 2007-04-18 12:42:17 EDT
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9) Gecko/20020412
Description of problem:
I can build CDs with updates up to 20020310, but adding the updates from
20020315 causes lots of cd swapping during install.
Including the rpm update for 4.0.4-7 (20020315) causes pkgorder to generate an
invalid order file (I think). This causes anaconda to install about half of the
packages and then get to mutt, ask for the 2nd cd, install mutt, ask for the 1st
cd again, install raidtools and anacron packages, go back to the 2nd cd for
minicom, etc. This swapping continues throughout the install.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Add update packages through 20020315 or later
2. Rebuild CDs
3. Try install with freshly build ISOs
Actual Results: Asked for 2nd cd to install mutt, and promptly asked for the
1st cd again.
Expected Results: It should install all the packages it needs on CD1, ask for
CD2 to finish out the install process.
The build environment is RH72+updates+extra packages.
Have also tried RH72
You'll also need to rebuild anaconda to use rpm 4.0.4 or continue to use 4.0.3
on the machine that you run pkgorder on. rpm changed to using chainsaw ordering
instead of presentation, so you don't get the same order unless you use the same
librpm both places.
I was able to sucessfully build working iso's by downgradeing my build
envrionment to rpm 4.0.3 and removing the rpm 4.0.4 upgrade from the build tree.
I am still having problems with 4.0.4 though. Here is what I did:
1. Upgrade build environment to rpm 4.0.4
2. Rebuild anaconda from srpm and --rebuild (so they should link aginst 4.0.4)
3. Install the newly created anaconda and anaconda-runtime packages.
4. Put new anaconda* pkgs in build tree.
5. Put rpm 4.0.4 update back in build tree.
6. Rebuild CDs
I still get the swapping problem at the same place.
Did I not compleate step 2 correctly?
Do I have to modify anaconda?
If so, can you please point me in the right direction?
I tried your suggestions above in two build environments. They are exactly the
same other than one has rpm 4.0.3 installed and the other has rpm 4.0.4
installed. I did it in both environments simultaneously to ensure I would not
make a mistake that would cause 4.0.4 to break.
Here is the process I used:
. Create 2 identical build environments (be403 and be404)
. Downgrade one to rpm 4.0.3 (be403)
. This inclues swapping out the following:
popt-1.6.4-7x.i386.rpm for popt-1.6.3-1.03.i386.rpm
rpm-4.0.4-7x.i386.rpm for rpm-4.0.3-1.03.i386.rpm
rpm-build-4.0.4-7x.i386.rpm for rpm-build-4.0.3-1.03.i386.rpm
rpm-devel-4.0.4-7x.i386.rpm for rpm-devel-4.0.3-1.03.i386.rpm
rpm-perl-4.0.4-7x.i386.rpm for rpm-perl-4.0.3-1.03.i386.rpm
rpm-python-4.0.4-7x.i386.rpm for rpm-python-4.0.3-1.03.i386.rpm
kdeadmin, gnorpm, rpmfind, and rpm2html were not installed
. Put rpm 4.0.3 in the build tree for be403
. Uninstall anaconda and anaconda-runtime from each environment
. Rebuild anaconda in each environment
. Install the newly built anaconda packages in their respective environments
. Put the new anaconda packages in their respective build trees
. build both distros and creat ISOs
The ISOs built in the 4.0.3 environment worked just fine, where the ISOs built
in the 4.0.4 environment have the cd swapping bug.
I also tooked at a diff between anaconda-7.2-7 and anaconda-7.2.93 to see if if
I could find anything that may need to be upgraded in anaconda itself, but I
didn't see anything that looked like it would fix this problem.
Thanks for your help,
By rebuilding anaconda, I don't mean the package. I mean you need to rebuild
the stage2 images used by anaconda during the install via buildinstall.
Otherwise, the new librpm isn't being used by the rpmmodule during the install.
I am rebuilding the images with buildinstall. This is done in the last step of
my previous post.
Here is an overview version of my build script. For this overview assume
$PYTHONPATH is set to "/usr/lib/anaconda" and the build tree is in /cd/i386
pkgorder /cd/i386 i386 > pkgorderfile
buildinstall --comp /cd/i386/RedHat/base/comps /cd/i386
# In the past I have also tried using the --pkgorder flag here,
# but it did not fix the problem then. I did not use it on this last test.
splitdistro --fileorder pkgorderfile /cd i386
genhdlist --withnumbers /cd/i386-disc1 /cd/i386-disc2
Several other people on the anaconda-devel list seem to have seen this same bug.
Could this problem be caused by a comps file that does not have everything in it?
Thanks for the quick response.
There are a variety of issues here and none of them are really anything that can
There's the issue of a new ordering method being used by RPM which causes
changes to the dependency tree. There's the issue of new dependency loops
causing the dependency tree to be out of whack.
This is a large part of why we can't support this rebuilding install trees with
all errata that people seem to like to do so much. There are just too many
variables of things that have to be carefully worked around. If you put rpm
4.0.3 in, everything will be happier, but the dependency loops in some of the
released errata may still come out to cause problems.
I just found what was causing the CD shuffel. On the last genhdlist, the one
that generates the lists on the CDs, I had not had a --fileorder <pkgorderfile>
argument. It is intresting that that flag was not necessary under rpm 4.0.3,
but the build breaks under rpm 4.0.4.
This was pointed out to me by Johns Summerfield (see anaconda-devel list).
Thanks for your help.