OpenSuSE YUM RPM Screw Up
After naively assuming YUM, which is part of the OpenSuSE 10.3 distro, would carry out updates rather than trash my system, I found:
prompt> rpm -ivh <package_name>.x86_64.rpm Preparing... package <package_name> is intended for a x86_64 architectureand yet
prompt> arch x86_64
Amazingly it turned out that YUM had managed to install the i586 version of RPM. After manually wgetting a the x86_64 .rpm of RPM and dependencies, we can force install the correct RPM:
rpm -Uvh --force --ignorearch rpm-4.4.2-140.x86_64.rpm popt-1.7-368.x86_64.rpm
Next up, fix OpenSuSE's system-trashing YUM config: /etc/yum.conf:
exclude=*.i386* *.i586* *.i686*. . . but see update, below. . .
And finally find all the i586 packages so we can replace them with x86_64 equivalents:
prompt> rpm -qa --qf "%{n}-%{arch}\n" | grep i586 mkinitrd-i586 blocxx-i586 dbus-1-i586 . . .
Update
The next problem is that some x86_64 packages, bizarrely, depend on i586 packages. So using the exclude configuration given above yields
Error: Missing Dependency: ...but those packages, at the required versions, are already installed.
Solution One
Don't use the exclude configuration and be very careful — check the architecture of packages that YUM wants to install and ensure that you don't get an i586 clobbering some critial x86_64.
Solution Two
Find yum-basearchonly via Google, or whatever. Seems to do the same as the exclude configuration given above.