Red Hat Bugzilla – Bug 484897
Anaconda fails to install when repository contains both x86_64 and i386 grub package
Last modified: 2009-02-17 11:34:01 EST
Description of problem:
we are trying to setup a kickstart network install for rhel 5.3 on our internal, private network. It's working fine on rhel 5.2, but for rhel 5.3 I try to setup a common repository with i386/ x86_64/ (stable, 5.2 at the moment) folders, and updates/ (for security upgrades, 5.3 packages and future updates). The updates/ has both i386 and x86_64 packages to save room, as it seem that x86_64 needs a lot of i386 packages too.
I've started from the same ks.cfg file as 5.2, using the correct (i386 or x86_64) stage2.img, and i386 does work fine, while x86_64 fails when starting installing packages. The error is conflict related, logs show:
file conflict: file /sbin/grub conflicts between attempted installs of grub-0.97-13.2.i386 and grub-0.97-13.2.x86_64
(and few more).
I've tried to add conflict in ks.cfg so x86_64 doesn't try to install the i386 grub package, which will obviously fails if it tries to install x86_64 too.
But adding stuff like:
in ks.cfg doesn't work, and it seems there is no way to tell kickstart and yum inside kickstart to prefer x86_64 stuff over i386.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Try to install using a repository with both i386 and x86_64 grub
Anaconda fails with file conflicts
Anaconda (or yum) should have preferred the x86_64 variant.
I've tried to look at kickstart guide at http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Installation_Guide/s1-kickstart2-options.html but nothing seems architecture-related.
The problem occurrs with grub but I guess it will appear with all the packages present for both arch.
Many thanks for any help,
Right, you will get these error messages for any packages that are present for both architectures. Basically, anaconda here is telling you that there is an error with your repository and it cannot be used as an installation source. You can't have two packages that provide the same files as part of the same RPM transaction - that's a file conflict. You will need to separate them out in order to do an installation.
The reason you can't work around this with a glob in the kickstart file is that RPM still has to perform a sanity check on the repo and it's catching this problem before we can even start installing packages.
Well, it seems that the x86_64 repository needs to contain some i386 packages. I'd like not to have them in both an x86_64/ and i386/ folders, nor to maintain an hardlink farm. Is there a clean solution?
And btw after install yum has no problem installing both arch for a package.
I don't know why x86_64 is not enough for it, and it's inconsistent with the behavior during install.
Right, the x86_64 repo does contain certain i386 packages, but those are typically devel packages in which case some files go into /usr/lib and some into /usr/lib64. So the files do not actually conflict.
I don't know of a cleaner way to do this. Our official repos are completely separated out by architecture.
On rhel 5.3 x86_64 dvd there's about 500M of i386 rpm packages, with stuff like xulrunner, qt, gtk stuff like that. Not really *devel* stuff.
Ok, those are still libs, which you put in /usr/lib and /usr/lib64 so they won't conflict. Point taken.
What about hal (which exists in i386 and x86_64 versions on the rhel5 x86_4 dvd)? or gconf?
Those are applications, with stuff in /usr/bin. But I guess they are not installed at first stage, but later, with yum/rpm able to install both arches.
So it's clearly not consistent, and while it can be convenient to install multiple arches for one package (especially libs), install should default to x86_64 (or $whatever_preferred_arch maybe).
Cheers, and thanks for your time.