Details
-
Bug
-
Status: Accepted
-
Normal
-
Resolution: Unresolved
-
PUP 7.18.0
-
None
-
Phoenix
-
Needs Assessment
-
Needs Assessment
Description
Puppet Version: 7.18.0
Puppet Server Version: N/A
OS Name/Version: CentOS 7, Alma Linux 8, Oracle Linux 8
When checking whether a package is already present, Puppet queries RPM using the package name and also using '–whatprovides' in case the requested object is a virtual package provided by some other.
When the virtual package is provided by multiple installed RPMs, Puppet fails with the following message: "Could not evaluate: no implicit conversion of Array into Hash"
Easily reproduced by trying to apply this simple manifest on a system from RedHat family with both curl and wget installed:
package { 'webclient': |
ensure => installed,
|
}
|
(We use 'webclient' here to provide an easily reproducible case. Our real issue is with 'perf' package on Oracle Linux that is provided by kernel-uek and a system can have several kernels installed.)
Desired Behavior:
Puppet understands that the requested object is already present from multiple sources and does nothing.
Actual Behavior:
Puppet fails with error:
# puppet apply -e "package { 'webclient': }" |
Notice: Compiled catalog for XX in environment production in 0.02 seconds |
Error: /Stage[main]/Main/Package[webclient]: Could not evaluate: no implicit conversion of Array into Hash
|
# rpm -q --whatprovides webclient
|
wget-1.14-18.el7_6.1.x86_64 |
curl-7.29.0-59.el7_9.1.x86_64 |
|
Attachments
Issue Links
- relates to
-
PUP-9605 Type package (provider yum) fails when handling kernel packages
-
- Resolved
-