Latest yum updates and Protected multilib versions

NethServer Version: 7.4

I ran yum update and during this process I lost connection to the server (I stupidly forgot to run this in screen).

When I reran yum update, I receive the following error message:

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

         2. You have multiple architectures of libgcc 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 libgcc 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: libgcc-4.8.5-16.el7_4.2.i686 != libgcc-4.8.5-16.el7_4.1.x86_64
Error: Protected multilib versions: systemd-libs-219-42.el7_4.10.i686 != systemd-libs-219-42.el7_4.7.x86_64

I can see that the following packages where updated:

Mar 18 16:24:37 Updated: php-common-5.4.16-43.el7_4.1.x86_64
Mar 18 16:24:38 Updated: libgcc-4.8.5-16.el7_4.2.x86_64
Mar 18 16:24:39 Updated: systemd-libs-219-42.el7_4.10.x86_64

If I run sudo yum downgrade systemd-libs libgcc php-common, I get the following:

Loaded plugins: auto-update-debuginfo, changelog, fastestmirror, nethserver_events
Loading mirror speeds from cached hostfile
 * base: www.mirrorservice.org
 * epel: www.mirrorservice.org
 * epel-debuginfo: www.mirrorservice.org
 * extras: mirror.mhd.uk.as44574.net
 * nethforge: mirror.nordest.systems
 * nethserver-base: mirror.nordest.systems
 * nethserver-updates: mirror.nordest.systems
 * nux-dextop: mirror.li.nux.ro
 * updates: mirror.mhd.uk.as44574.net
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
--> Running transaction check
---> Package libgcc.i686 0:4.8.5-16.el7 will be a downgrade
---> Package libgcc.i686 0:4.8.5-16.el7_4.1 will be erased
---> Package libgcc.x86_64 0:4.8.5-16.el7_4.1 will be a downgrade
---> Package libgcc.x86_64 0:4.8.5-16.el7_4.2 will be erased
---> Package php-common.x86_64 0:5.4.16-43.el7_4 will be a downgrade
---> Package php-common.x86_64 0:5.4.16-43.el7_4.1 will be erased
---> Package systemd-libs.i686 0:219-42.el7_4.6 will be a downgrade
---> Package systemd-libs.i686 0:219-42.el7_4.7 will be erased
---> Package systemd-libs.x86_64 0:219-42.el7_4.7 will be a downgrade
---> Package systemd-libs.x86_64 0:219-42.el7_4.10 will be erased
--> Finished Dependency Resolution
Error: Package: systemd-219-42.el7_4.10.x86_64 (installed)
           Requires: systemd-libs = 219-42.el7_4.10
           Removing: systemd-libs-219-42.el7_4.7.i686 (@updates)
               systemd-libs = 219-42.el7_4.7
           Downgraded By: systemd-libs-219-42.el7_4.6.i686 (updates)
               systemd-libs = 219-42.el7_4.6
           Removing: systemd-libs-219-42.el7_4.10.x86_64 (installed)
               systemd-libs = 219-42.el7_4.10
           Downgraded By: systemd-libs-219-42.el7_4.7.x86_64 (updates)
               systemd-libs = 219-42.el7_4.7
           Available: systemd-libs-219-42.el7.i686 (base)
               systemd-libs = 219-42.el7
           Available: systemd-libs-219-42.el7_4.1.i686 (updates)
               systemd-libs = 219-42.el7_4.1
           Available: systemd-libs-219-42.el7_4.4.i686 (updates)
               systemd-libs = 219-42.el7_4.4
 You could try using --skip-broken to work around the problem
** Found 4 pre-existing rpmdb problem(s), 'yum check' output follows:
libgcc-4.8.5-16.el7_4.2.x86_64 is a duplicate with libgcc-4.8.5-16.el7_4.1.x86_64
php-common-5.4.16-43.el7_4.1.x86_64 is a duplicate with php-common-5.4.16-43.el7_4.x86_64
systemd-219-42.el7_4.10.x86_64 is a duplicate with systemd-219-42.el7_4.7.x86_64
systemd-libs-219-42.el7_4.10.x86_64 is a duplicate with systemd-libs-219-42.el7_4.7.x86_64

If I start running yum-complete-transaction, it runs for quite a bit of time before I stop it as its doing a lots of checks and continually refers to removing a lot packages (including packages for Nethserver to operate) and I am not at all a fan of removing a shed load of packages and then having to reinstall and reconfigure the Nethserver installation.

This one has me really screwed over and I don’t know how to fix it without breaking things…

Any good recommendations on how to fix this?

1 Like

At your own risk:

yum distro-sync

Synchronizes the installed package set with the latest packages available, this is done by either obsoleting, upgrading or downgrading as appropriate.

Thanks @dnutan, that would be one option. Any other recommendations before I dive in and try that one?

Marc suggested the safest approach. If it doesn’t work, you will need to remove conflicting RPMs by hand using rpm -e --nodeps

1 Like

That seems to have “solved” about 95% of the issue - thanks

Now that 98% of the issue has been resolved and the vast bulk of the updates have been applied, I am now coming up against the following issue:

# yum update
Loaded plugins: auto-update-debuginfo, changelog, fastestmirror, nethserver_events
Loading mirror speeds from cached hostfile
 * base: www.mirrorservice.org
 * epel: www.mirrorservice.org
 * epel-debuginfo: www.mirrorservice.org
 * extras: mirror.mhd.uk.as44574.net
 * nethforge: mirror.nordest.systems
 * nethserver-base: mirror.nordest.systems
 * nethserver-updates: mirror.nordest.systems
 * nux-dextop: mirror.li.nux.ro
 * updates: mirror.mhd.uk.as44574.net
Resolving Dependencies
--> Running transaction check
---> Package libgcc.i686 0:4.8.5-16.el7_4.1 will be updated
---> Package libgcc.i686 0:4.8.5-16.el7_4.2 will be an update
---> Package systemd-libs.i686 0:219-42.el7_4.7 will be updated
---> Package systemd-libs.i686 0:219-42.el7_4.10 will be an update
--> Finished Dependency Resolution
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 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).

       Protected multilib versions: systemd-libs-219-42.el7_4.10.i686 != systemd-libs-219-42.el7_4.7.x86_64
Error: Protected multilib versions: libgcc-4.8.5-16.el7_4.2.i686 != libgcc-4.8.5-16.el7_4.1.x86_64

Any suggestions of how ti fix this?

what about

yum history redo

with yum history you can identify the right transaction (the incomplete one) and the redo it

google for examples

1 Like

This was finally fixed with the package-cleanup --cleandupes command.

Thanks for the help guys!

3 Likes