刚开始使用Puppet,并使用下面的数组“确保”,因此安装了一个特定版本的Apache (而不是最新版本)和它的“持有”(这意味着它不会在标准apt-get dist-upgrade上升级到最新版本)。
当使用下面的代码时,Puppet只考虑到“确保”数组中的第一个值。因此,当下面的代码被执行时,它会安装正确版本的Apache,但是包不会被设置为容纳(通过运行dpkg --get-selection检查)。
如果交换数组中的值,则包被保存,但安装了最新版本。
package { 'apache2':
ensure => [ "2.0.64", held ],
}感谢你对这篇文章的指点!
谢谢。
发布于 2012-03-15 22:11:07
据我所知,通过阅读源代码,“可保留”功能是有根本缺陷的。“确保”(请参阅ensurable.do,第50行)不能接受一个选项数组。因此,包不能同时安装在特定版本并使用dpkg标记保存。我假设解析器的默认行为是这样的,如果它接收到一个不受支持的数组,则使用第一个值。这就解释了你的结果。
在我看来,版本和/或可保留的特性应该作为一个新变量重新实现,例如:
package { 'apache2'
ensure => installed,
version => '2.0.64',
hold => true,
}我建议你提交一份错误报告。在此期间,你可以:
package { 'apache2':
ensure => '2.0.64',
}
exec { 'hold-apache2-version':
command => 'dpkg ...',
require => Package['apache2'],
}https://serverfault.com/questions/370266
复制相似问题