1

I am trying to update a package with yum (puppet-agent) but this is failing due to a lack of dependencies - error output below.

I think I know why this is: the old version (1.10.9-1) of the package had a dependency on some mcollective-* packages which the new version (6.4.2) does not, and the `mcollective packages are no longer available in my yum repo.

However, I cannot work out where the dependency is coming from or how to best work around this. So I would like to ask for help with two aspects:

  1. How can I find the source of the dependency? The usual methods such as https://superuser.com/a/294666 don't show it - see details below.
  2. What is the best way to carry out the upgrade? I've tried a few things but I am not sure if there are better approaches (a few attempts detailed below)

Note that I need to deploy this update across a large number of hosts (using Puppet, of course), so I need a solution that does not involve much manual labour.


Error

[root@csqdev-app02 ~]# yum update puppet-agent
(...)  
Resolving Dependencies
--> Running transaction check
---> Package puppet-agent.x86_64 0:1.10.9-1.el7 will be updated
--> Processing Dependency: mcollective-common >= 2.2.1 for package: mcollective-service-common-3.1.3-1.el7.noarch
--> Processing Dependency: mcollective-common >= 2.2.1 for package: mcollective-nettest-common-3.0.4-1.el7.noarch
--> Processing Dependency: mcollective-common >= 2.2.1 for package: mcollective-nrpe-common-3.1.0-1.el7.noarch
--> Processing Dependency: mcollective-common >= 2.2.1 for package: mcollective-puppet-common-1.11.1-1.el7.noarch
--> Processing Dependency: mcollective-common >= 2.2.1 for package: mcollective-package-common-4.4.0-1.el7.noarch
---> Package puppet-agent.x86_64 0:6.4.2-1.el7 will be an update
--> Finished Dependency Resolution
Error: Package: mcollective-service-common-3.1.3-1.el7.noarch (@puppetlabs)
           Requires: mcollective-common >= 2.2.1
           Removing: puppet-agent-1.10.9-1.el7.x86_64 (@puppetlabs)
               mcollective-common >= 3.0.0-1.el7
           Updated By: puppet-agent-6.4.2-1.el7.x86_64 (puppetlabs6)
               Not found
           Available: puppet-agent-1.0.0-1.el7.x86_64 (puppetlabs)
(...)

Dependency search

However, when I checked using repoquery the dependency does not show up for either version

[root@csqdev-app02 ~]# repoquery --requires --resolve --pkgnarrow=all puppet-agent-1.10.9 | uniq | sort
bash-0:4.2.46-31.el7.x86_64
coreutils-0:8.22-23.el7.x86_64
readline-0:6.2-10.el7.i686
readline-0:6.2-10.el7.x86_64
systemd-0:219-62.el7.x86_64
tar-2:1.26-35.el7.x86_64
util-linux-0:2.23.2-59.el7_6.1.i686
util-linux-0:2.23.2-59.el7_6.1.x86_64
[root@csqdev-app02 ~]# repoquery --requires --resolve --pkgnarrow=all puppet-agent-6.4.2 | uniq | sort
bash-0:4.2.46-31.el7.x86_64
coreutils-0:8.22-23.el7.x86_64
systemd-0:219-62.el7.x86_64
tar-2:1.26-35.el7.x86_64
util-linux-0:2.23.2-59.el7_6.1.i686
util-linux-0:2.23.2-59.el7_6.1.x86_64

Note that I tried repoquery with the --recursive option as well, but no sign of mcollective*.

I also tried to use rpm direclty (rpm -qR puppet-agent) but again no sign of mcollective

Upgrade workarounds

I have tried the following approaches which work but I'm not sure if they are any good:

  1. yum remove puppet-agent to completely remove the old version, then yum install puppet-agent to install the new version
  2. Add a repo that has the old mcollective-* packages, do the update, then remove the mcollective-* packages.

I don't really like either approach, especially as I will have to automate it with (you guessed it), Puppet.

System Info

[root@csqdev-app02 ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@csqdev-app02 ~]# uname -a
Linux csqdev-app02.grass.corp 3.10.0-957.21.3.el7.x86_64 #1 SMP Tue Jun 18 16:35:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.