I am trying to update a package with
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:
- 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.
- 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.
[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) (...)
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
I also tried to use rpm direclty (
rpm -qR puppet-agent) but again no sign of
I have tried the following approaches which work but I'm not sure if they are any good:
yum remove puppet-agentto completely remove the old version, then
yum install puppet-agentto install the new version
- Add a repo that has the old
mcollective-*packages, do the update, then remove the
I don't really like either approach, especially as I will have to automate it with (you guessed it), Puppet.
[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