Error: Multilib version problems found

850 views
Skip to first unread message

amogh patel

unread,
Apr 2, 2014, 11:18:59 AM4/2/14
to puppet...@googlegroups.com
Hi Puppet Users,

I'm facing below error after the repo updates:

Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install libstdc++.i686' returned 1: 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.

rotected multilib versions: libstdc++-4.4.7-4.el6.i686 != libstdc++-4.4.7-3.el6.x86_64
 You could try using --skip-broken to work around the problem

same with libtiff.

Googled and found a work around using exec but how can we address application package upgrade which requires both architecture.


thanks,
amogh

jcbollinger

unread,
Apr 3, 2014, 10:26:57 AM4/3/14
to puppet...@googlegroups.com


Package names and multilib are a bit of a sore spot for Puppet at the moment, but there are at least two approaches you could try:
  1. Manage yum.conf to ensure that the 'multilib_policy' is set to 'all'.
  2. Manage arch-specific packages, e.g. "libstdc++.i686" and "libstdc++.x86_64".  This may also depend on having matching versions in your repository
Both approaches require that your package repositories contain matching package versions for each architecture where there are packages for multiple architectures at all.


John

amogh patel

unread,
Apr 3, 2014, 11:42:26 AM4/3/14
to puppet...@googlegroups.com
Thanks for your reply John. I read about your first solution which you posted earlier but I'm trying the second one. 

yum repo: (This was updated)

Available Packages
libstdc++.i686                                                                               4.4.7-4.el6                                                                          
libstdc++.x86_64                                                                           4.4.7-4.el6

Current package on agent:

libstdc++-4.4.7-3.el6.i686
libstdc++-4.4.7-3.el6.x86_64

Puppet Master:

In hiera

packages::aa_app_req:
  - libtiff
  - libpng
  - libstdc++.x86_64
  - libtiff.i686
  - libpng.i686
  - libstdc++.i686

In manifest

  $aa_app_req_array = hiera_array('packages::aa_app_req')
  package { $aa_app_req_array:
#    ensure => installed,
    ensure => latest,
  }

Now as the repository has been updated recently and the agent already has previous version of both arch installed, the next puppet run fails with the multilib error. If you could help me understand whether I'm implementing the 2nd solution correctly?

Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install libstdc++.x86_64' returned 1: Error: Protected multilib versions: libstdc++-4.4.7-4.el6.x86_64 != libstdc++-4.4.7-3.el6.i686
 You could try using --skip-broken to work around the problem


thanks,
amogh

jcbollinger

unread,
Apr 4, 2014, 9:11:24 AM4/4/14
to puppet...@googlegroups.com


On Thursday, April 3, 2014 10:42:26 AM UTC-5, amogh patel wrote:
Thanks for your reply John. I read about your first solution which you posted earlier but I'm trying the second one. 



If you need both the i686 version and the x86_64 version of that package installed, then you should keep their versions synchronized.  If not, then you should remove the unneeded version (presumably the i686 one).  You can get Puppet to perform the removal for you in the latter case.

If you have two architecture variants of the same library package installed, then you cannot update just one of them unless you first turn off the 'protected_multilib' option in your yum configuration, which I advise you NOT to do.  If you must maintain a multilib system (instead of, for instance, a pure x86_64 system), then setting yum's multilib_policy to 'all' really is a good choice.

If you don't want to do that, then when you manage a package for which multiple arches are in fact presently installed then you must avoid specifying a particular architecture (i.e. exactly the opposite of my (2) above).  Failing that, your next best option is to avoid managing library packages directly at all.  Instead, let yum install library packages automatically, as needed to satisfy the dependencies of other packages.  Like many expert systems, yum works most effectively when you give it high-level tasks and let it work out the low-level details for itself.


John

Reply all
Reply to author
Forward
0 new messages