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.

Internal content