mkinitrd update problem

James Wilkinson fedora at aprilcottage.co.uk
Mon Jan 22 00:04:38 UTC 2007


Andreas (Andy) Roddau wrote:
> [('file /sbin/mkinitrd from install of mkinitrd-5.1.19.0.2-1 conflicts with 
> file from package mkinitrd-5.1.19-1', (7, '/sbin/mkinitrd', 0L))]
> 
> I get this error all the time using the Package Updater.  Subsequently I 
> uncheck it all the time.  Would someone kindly tell me (or point me in the 
> right direction) how I can fix this?  I'm still pretty new to Linux and 
> looking at the file, just scares me off even more (from trying to fix it 
> myself).  I run a.... Athlon64 3800X2  Fedora Core 6 kernel 2.6.19-1.2895 
> (x86-64)

Hi there! It looks like you've come across a multi-arch RPM bug.

Multi-arch, in our cases, means "both 32 bit and 64 bit packages on the
same system". The Athlon 64 was designed so that you can have existing
32 bit programs and 64 bit programs running at the same time (when in a
64 bit OS). Unfortunately, a 64 bit program needs 64 bit libraries, and
a 32 bit program needs 32 bit libraries. So it's fairly common for a
system to need both the 32 bit *and* the 64 bit variant of the same
package installed.

In your case, you might have initially had mkinitrd-5.1.19-1 for i386
installed, *and* mkinitrd-5.1.19-1 for x86-64 installed.

Fedora handles this by putting 32 bit libraries under whatever/lib, 64
bit binaries under whatever/lib64, allowing 64 bit programs to take
precedence over 32 bit binaries, and assuming that everything else will
be identical between the two packages. This works surprisingly well --
as long as both versions of the package are identical.

Sometimes, due to RPM bugs, things do get out of sync. This is easiest
to see through a terminal. Type
yum list mkinitrd
If I do that, I get (the normal yum working, and)
Installed Packages
mkinitrd.x86_64                          5.1.19.0.2-1
installed       
Available Packages
mkinitrd.i386                            5.1.19.0.2-1           updates

You may have an i386 version of the package installed, and you probably
have mkinitrd-5.1.19-1 packages installed too. (You aren't supposed to
be able to have both 5.1.19-1 and 5.1.19.0.2-1 installed at the same
time -- that's the real bug in RPM).

What to do next depends on what else you have installed. You may not
actually need the i386 version of mkinitrd, in which case the easiest
thing to do is to remove it. So try it -- use
su -
to become root, and run
rpm -e mkinitrd-5.1.19.0.2-1.i386
and/or
rpm -e mkinitrd-5.1.19-1.i386
depending on what you've got installed. rpm won't display anything unless
there's an error -- such as other programs need that package.

You could also use one of those commands (or the x86_64 equivalent) to
remove the "odd" version of the package, so that both x86_64 and i386
are at the same level.

If all else fails, there's the --nodeps argument to rpm. This is an "all
else fails" option, because the RPM database ensures that each package
on the system has the required "dependencies" (other packages) needed to
make it work. And you're about to break it -- it's your responsibility
to make sure that there's a working version of mkinitrd in whatever form
needed by the end of the session.

Type
rpm -e --nodeps mkinitrd-5.1.19.0.2-1.i386
rpm -e --nodeps mkinitrd-5.1.19-1.i386
(removing all the i386 packages)
rpm -e --nodeps mkinitrd-5.1.19-1.x86_64
yum install -y mkinitrd
(which puts the latest version, and just the latest version, in all
available architectures) on your system. It also fixes the RPM database

Hope this helps, and good luck!

James.

-- 
E-mail:     james@ | Words fail me.  Thank goodness I can make gestures.
aprilcottage.co.uk |     -- Mark Hughes




More information about the fedora-list mailing list