Puppet
當存在多個版本時,Puppet Package 類無法檢測已安裝的包
我正在嘗試安裝與
kernel-devel
正在執行的核心版本匹配的軟體包。我的猜測是:
package { 'kernel-devel': ensure => "${facts['kernelrelease']}", }
kernel-devel
但如果已經安裝了多個軟體包,它就不起作用。這是我得到的錯誤:
Error: Could not update: Failed to update to version 3.10.0-957.21.3.el7.x86_64, got version 3.10.0-957.21.3.el7; 3.10.0-1062.4.3.el7; 3.10.0-1062.9.1.el7 instead
所以包已經安裝,但是 Package 類引發錯誤,因為(顯然)它執行字元串比較而不是查看版本列表。
處理這個問題的正確方法是什麼?
除非我有誤解,否則您可以使用資源標題中的版本來解決這個問題。
package { "kernel-devel-${facts['kernelrelease']}": ensure => present, }
或者,如果您有其他依賴於 ‘kernel-devel’ 的資源,您可以使用 name 屬性。
package { 'kernel-devel': name => "kernel-devel-${facts['kernelrelease']}", ensure => present, }
[root@aaron ~]# dnf list installed kernel-devel Installed Packages kernel-devel.x86_64 5.3.11-200.fc30 @updates kernel-devel.x86_64 5.3.14-200.fc30 @updates [root@aaron ~]# uname -a Linux aaron 5.3.15-200.fc30.x86_64 #1 SMP Thu Dec 5 15:18:00 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [root@aaron ~]# puppet apply kernel-devel.pp Notice: Compiled catalog for aaron.tsp in environment production in 0.54 seconds Notice: /Stage[main]/Main/Package[kernel-devel-5.3.15-200.fc30.x86_64]/ensure: created Notice: Applied catalog in 62.18 seconds [root@aaron ~]# dnf list installed kernel-devel Installed Packages kernel-devel.x86_64 5.3.11-200.fc30 @updates kernel-devel.x86_64 5.3.14-200.fc30 @updates kernel-devel.x86_64 5.3.15-200.fc30 @updates