Symptoms
Packages' update via yum fails with the following error:
> Error: Multilib version problems found. This often means that the root
> cause is something else and multilib version checking is just
> pointing out that there is a problem. Eg.:
>
> 1. You have an upgrade for libcurl which is missing some
> dependency that another package requires. Yum is trying to
> solve this by installing an older version of libcurl of the
> different architecture. If you exclude the bad architecture
> yum will tell you what the root cause is (which package
> requires what). You can try redoing the upgrade with
> --exclude libcurl.otherarch ... this should give you an error
> message showing the root cause of the problem.
>
> 2. You have multiple architectures of libcurl installed, but
> yum can only see an upgrade for one of those arcitectures.
> If you don't want/need both architectures anymore then you
> can remove the one with the missing update and everything
> will work.
>
> 3. You have duplicate versions of libcurl installed already.
> You can use "yum check" to get yum show these errors.
>
> ...you can also use --setopt=protected_multilib=false to remove
> this checking, however this is almost never the correct thing to
> do as something else is very likely to go wrong (often causing
> much more problems).
>
> Protected multilib versions: libcurl-7.19.7-40.el6_6.3.i686 != libcurl-7.21.3-9.el6.x86_64
> You could try using --skip-broken to work around the problem
> ** Found 2 pre-existing rpmdb problem(s), 'yum check' output follows:
> libcurl-7.21.3-9.el6.x86_64 is a duplicate with libcurl-7.19.7-36.el6_4.i686
Cause
Scenario 1:
Both x86_64 and i686 versions of libcurl are installed and have different versions:
# rpm -q libcurl
libcurl-7.19.7-36.el6_4.i686
libcurl-7.21.3-9.el6.x86_64
The one available in repositories is i686 but it is still older than 7.21.3-9
# yum -q list available libcurl
Available Packages
libcurl.i686 7.19.7-40.el6_6.3 updates
Scenario 2:
Installed version is different than the one available on the repository:
# rpm -q rrdtool
rrdtool-1.4.4-1.wrl.i386
# yum -q list available rrdtool
Available Packages
rrdtool.i686 1.3.8-7.el6 base
rrdtool.x86_64 1.3.8-7.el6 base
Resolution
Check if both x68_64 and i686 versions are used (you can try removing them with rpm -e --test
command to see if it shows any dependency errors). If one of those is not used and not needed - remove it.
If both are used and needed then either find and install 7.21.3-9
version of i686 or downgrade x86_64 one to the version 7.19.7-40
or run exclude this package from update list:
# yum --exclude libcurl update
Same approach can be used for other packages too.