yum localupdate weirdness on x86_64

D. Hugh Redelmeier hugh at mimosa.com
Mon Dec 4 22:20:55 UTC 2006


Warning: long.

Summary: 

(1) yum isn't doing what I want with respect to updating packages that
    come in i386 and x86_64 architectures.

(2) one example looks like a bug

Background:
I'm trying to install FC6 for x86_64 on my notebook (this is not going
smoothly, but that is a topic for another time).
I have an NFS server with a copy of all the updated RPMs.
I'm trying to apply these updates.

In the past, I've applied updates from the NFS server by doing:
	yum localupdate *.rpm
(In the more distant past, I used
	rpm -Fv *.rpm
but that didn't work well when updated packages had new dependencies.)

Right now, this yum command is failing to do what I want.  I think
that this is a bug but it may be a feature.

For example, I have kdegraphics for x86_66 installed:
    # rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep kdegraphics
    kdegraphics-devel-3.5.4-1.fc6.x86_64
    kdegraphics-devel-3.5.4-1.fc6.i386
    kdegraphics-3.5.4-1.fc6.x86_64

I don't know why I had kdegraphics-devel for i386 installed.  I've
now removed it.

The updates repository for x86_64 has two versions of kdegraphics:
	kdegraphics-3.5.5-0.1.fc6.i386.rpm
	kdegraphics-3.5.5-0.1.fc6.x86_64.rpm
I don't know why, but it ought to be harmless.  It isn't.

To me, harmless would mean that this command would do nothing, but
that isn't the case:
	yum localupdate kdegraphics-3.5.5-0.1.fc6.i386.rpm
Instead, here's what it proposes to do:
    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Updating:
     kdegraphics             i386       7:3.5.5-0.1.fc6  kdegraphics-3.5.5-0.1.fc6.i386.rpm   18 M
    Installing for dependencies:
     fribidi                 i386       0.10.7-5.1       core               53 k
     gphoto2                 i386       2.2.0-2.1        core              1.4 M
     libexif                 i386       0.6.13-2         core              149 k
     libieee1284             i386       0.2.9-3.2.2      core               33 k
     sane-backends-libs      i386       1.0.18-5.fc6     core              2.3 M
    Updating for dependencies:
     arts                    x86_64     8:1.5.5-0.1.fc6  updates           1.2 M
     kdebase                 x86_64     6:3.5.5-0.4.fc6  updates            29 M
     kdelibs                 x86_64     6:3.5.5-0.2.fc6  updates            18 M
     qt                      x86_64     1:3.3.7-0.1.fc6  updates           3.6 M

    Transaction Summary
    =============================================================================
    Install      5 Package(s)
    Update       5 Package(s)
    Remove       0 Package(s)

Why would it replace an x86_64 package with an i386 package?
Given that it is doing so, why does it care at all about x86_64 libraries (like kdelibs and qt)?

Curiouser and curiouser: these two commands act differently:
	yum localupdate kdegraphics-3.5.5-0.1.fc6.i386.rpm kdegraphics-3.5.5-0.1.fc6.x86_64.rpm
	yum localupdate kdegraphics-3.5.5-0.1.fc6.x86_64.rpm kdegraphics-3.5.5-0.1.fc6.i386.rpm
I would have expected yum to ignore order (and pick the newest best match).

The first proposes to do this, a natural extension of above.  This is
a natural extension of what the previous just-i386 command proposed to
do.  I would rather that it realized that the x86_64 version trumped
the i386 version (ie. closer to being an update).

    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Updating:
     kdegraphics             x86_64     7:3.5.5-0.1.fc6  kdegraphics-3.5.5-0.1.fc6.x86_64.rpm   19 M
     kdegraphics             i386       7:3.5.5-0.1.fc6  kdegraphics-3.5.5-0.1.fc6.i386.rpm   18 M
    Installing for dependencies:
     fribidi                 i386       0.10.7-5.1       core               53 k
     gphoto2                 i386       2.2.0-2.1        core              1.4 M
     libexif                 i386       0.6.13-2         core              149 k
     libieee1284             i386       0.2.9-3.2.2      core               33 k
     sane-backends-libs      i386       1.0.18-5.fc6     core              2.3 M
    Updating for dependencies:
     arts                    x86_64     8:1.5.5-0.1.fc6  updates           1.2 M
     kdebase                 x86_64     6:3.5.5-0.4.fc6  updates            29 M
     kdegraphics-devel       x86_64     7:3.5.5-0.1.fc6  updates           106 k
     kdelibs                 x86_64     6:3.5.5-0.2.fc6  updates            18 M
     qt                      x86_64     1:3.3.7-0.1.fc6  updates           3.6 M

    Transaction Summary
    =============================================================================
    Install      5 Package(s)
    Update       7 Package(s)
    Remove       0 Package(s)

The second balks with this error message:
	Error: Missing Dependency: kdegraphics = 7:3.5.4-1.fc6 is needed by package kdegraphics-devel

What the heck?  It is unfortunate that this dependency does not
mention %{ARCH}.  Even so, it makes no sense since both archs'
packages will be present

This looks like a bug to me.  Is there a reasonable explanation?




More information about the fedora-list mailing list