Centos – Multilib version problems on CentOs 7

centoscentos7

When I try to update YUM with sudo yum update --exclude=kernel*,python* --skip-broken, I get Multilib version problems found. Protected multilib-versions:

systemd-libs-219-30.el7_3.7.x86_64!=systemd-libs-219-30.el7_3.6.i686.

How can I solve this? I have CentOS 7.3, and my architecture is x86_64.

Fout:  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 systemd-libs which is missing some
           dependency that another package requires. Yum is trying to
           solve this by installing an older version of systemd-libs 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 systemd-libs.otherarch ... this should give you an error
           message showing the root cause of the problem.

        2. You have multiple architectures of systemd-libs installed, but
           yum can only see an upgrade for one of those architectures.
           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 systemd-libs 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).

      Beschermde multilib-versies: systemd-libs-219-30.el7_3.7.x86_64!=systemd-libs-219-30.el7_3.6.i686

Best Answer

Yum is complaining that the 64-bit and 32-bit versions of the RPM for systemd-libs in your system do not match.

You'll see that it has version 219-30.el7_3.7 for x86_64 (64-bit) and version 219-30.el7_3.6 for i686 (32-bit).

You can check the version of the package for each architecture in your system with this command:

$ rpm -q systemd-libs
systemd-libs-219-30.el7_3.6.i686
systemd-libs-219-30.el7_3.7.x86_64

See if you see some anomaly there, such as having two versions of systemd-libs for i686...

If the versions match, then the problem might be that yum is trying to upgrade the x86_64 version, but leaving the i686 version behind.

It's possible that your --skip-broken is triggering this somehow, if the i686 version of the package is somehow "broken" to yum...

It's also possible that your system was reconfigured to only consider 64-bit packages and no longer try to install (or maintain) 32-bit ones...

You can try some utilities from the yum-utils package to troubleshoot this.

Can you install it?

$ sudo yum install yum-utils

If you do, try this command to complete yum transactions that were interrupted (which might have caused the issue in the first place):

$ sudo yum-complete-transaction

You can also use the package-cleanup command. For instance, if it seems you have duplicate packages (multiple versions installed for the 32-bit one), try this:

$ sudo package-cleanup --cleandupes

I hope this helps!

Related Topic