Discussion:
Dealing with rpms from multiple architectures when executing rpm -Uvh
Linux Subscriptions
2008-03-20 23:55:05 UTC
Permalink
I'm trying to use the
rpm --Uvh command
to apply certain security patches in an automated way to some boxes I have
that can't connect outside of the intranet (so I can't use up2date in the
normal way).

For the x86 version of the patch in question, Red Hat provides 4 rpms, which
I have in a directory:

# ls *.rpm
openssl-0.9.8b-8.3.el5_0.2.i386.rpm
openssl-devel-0.9.8b-8.3.el5_0.2.i386.rpm
openssl-0.9.8b-8.3.el5_0.2.i686.rpm
openssl-perl-0.9.8b-8.3.el5_0.2.i386.rpm

Normally, my script can execute
rpm -Uvh *.rpm

To apply the upgrade.

However, when I try rpm -Uvh --test in this case I get:
rpm -Uvh *.rpm
warning: package openssl = 0.9.8b-8.3.el5_0.2 was already added, skipping
openssl < 0.9.8b-8.3.el5_0.2
error: error reading from file openssl-0.9.8b-8.3.el5_0.2.i686.rpm

I guess this is because I'm adding openssl-0.9.8b-8.3.el5_0.2.i386.rpm, as
well as the i686 optimized version
openssl-0.9.8b-8.3.el5_0.2.i686.rpm(since they are both supplied by
RedHat).

[[An aside: Note that the error message is incorrect, it says that it's
skipping openssl < 0.9.8b-8.3.el5_0.2, when in fact both versions are equal
to 0.9.8b-8.3.el5_0.2.]]

Question: is there a way to tell rpm to choose the correct rpm corresponding
to the architecture of the machine (and/or the already-installed openssl
rpm's architecture). Or do I need to write a custom script to 'figure out'
which one(s) to keep?

Thanks!

Hopefully Helpful Notes:
OS: RHEL 5 32 bit
rpm version: RPM version 4.4.2

#uname -a:
Linux myhost 2.6.18-8.el5PAE #1 SMP Fri Jan 26 14:28:43 EST 2007 i686 i686
i386 GNU/Linux

# rpm -qa --qf "%{name} %{version} %{release} %{arch}\n" | grep "^openssl"
openssl097a 0.9.7a 9 i386
openssl-devel 0.9.8b 8.3.el5 i386
openssl 0.9.8b 8.3.el5 i686
openssl-perl 0.9.8b 8.3.el5 i386

Loading...