== Installing Wine on Fedora Core 5 [[x86_64|]] Here's a fun Fedora Core RPM dependency problem that I just fixed. (Since I've jumped on Ubuntu for similar things, I feel that equal time is only fair.) I have been trying to install Wine on my Fedora Core 5 machine for a while, without success. The visible manifestation of the problem was that '_yum install wine_' would download everything and then bomb out during the install complaining about two things: * 'package sane-backends-1.0.18-2.fc5 (which is newer than sane-backends-1.0.17-4) is already installed' * 'file from install of sane-backends-1.0.17-4 conflicts with file from package sane-backends-1.0.18-2.fc5'; the files were all architecture-independent things like manpages. My machine is an [[x86_64|]] one, but Wine is an i386 program and thus requires requires i386 libraries, which was clearly where the requirement for 'sane-backends' was coming in; it was trying to install an i386 version, which was conflicting with the [[x86_64|]] version I already had installed. Installing the same package for multiple architectures is a hard problem. In order to make it work in RPM, you have to insure that each package supplies absolutely identical versions of common files like manpages and so on. Knowing this, I wrote the Wine installation problems off to the Fedora Extras Wine people having goofed up on this, and just retried periodically hoping that they'd fixed it. (I flirted briefly with removing the [[x86_64|]] version of sane-backends, but it turns out to be required by a number of things that I wanted to keep.) After I did a successful install of Wine on my FC6 test machine, I took a deeper look into the problem to try to figure out what was different between the two environments. * first, I _yum install_ed all of the other Wine dependencies, just to simplify things. This let me see that FC5 Wine was pulling in the i386 sane-backends because it wanted 'libsane.so.1' (an i386 library; an [[x86_64|]] one would have had a '(64bit)' tacked on the end). * _rpm -q --requires wine-core_ on the FC6 machine showed that the FC6 Wine still needed this library. * _rpm -q --whatprovides libsane.so.1_ on FC6 said that it was coming from the i386 sane-backends-libs. * _yum list sane-backends-libs*_ on FC5 said that there was indeed an i386 version of this RPM. So I _yum install_ed the RPM by hand, then retried the Wine install and it went through. What happened is that Red Hat ran into the multiarch issues and split the libraries off into the sane-backends-libs RPM to fix it, but only after Fedora Core 5 was released. The old, pre-split version of the sane-backends RPM stayed around in the 'core' RPM repository (which is what was shipped with the initial release); when _yum_ went looking to satisfy the dependency it found that first and used it. Fedora Core 6 avoided the problem by having the post-split RPM from the start. (You can see this live with '_yum whatprovides libsane.so.1_' on a FC5 machine, which will report both sources.) While I could call this a yum bug, I think a fairer assessment is that yum is missing a feature: it should have some way of ordering the repositories when it tries to satisfy dependencies (I suspect that at the moment it effectively uses alphabetical order in _/etc/yum.repos.d_). Alternately, it should just default to preferring the newest RPM that will satisfy the dependency.