mic*_*hal 5 linux rpm installation puppet
我使用 packageinstall属性来确保X安装了给定的包。
但是,即使安装了软件包,也会puppet尝试重新安装它,当然会以异常退出(“X 已安装”)。当包名称与服务名称匹配时不会发生这种情况。我使用本地 RPM 和 RPM 提供程序。
我如何避免这种异常?
我还实施了一个解决方法:如果我成功安装 RPM,我会创建一个名为/X_DONE. 然后我根据该文件安装依赖项,而不是包。
处理这种情况的正确方法是什么?
编辑:失败的清单:
file {"$tmp_dir/$php_pdo":
ensure => present,
source => "puppet:///files/services/$php_pdo"
}
package {"php_pdo":
require => File["$tmp_dir/$php_pdo"],
ensure => installed,
provider => rpm,
source => "$tmp_dir/$php_pdo"
}
Run Code Online (Sandbox Code Playgroud)
和例外:
err: /Stage[main]/Apache-php/Package[php_pdo]/ensure: change from absent to present failed: Execution of '/bin/rpm -i --oldpackage /tmp/puppet/php-pdo-5.1.6-27.el5_5.3.x86_64.rpm' returned 1: package php-pdo-5.1.6-27.el5_5.3.x86_64 is already installed
Run Code Online (Sandbox Code Playgroud)
您通过名称“php_pdo”引用包,但 Puppet 将包视为“php-pdo”(破折号,而不是下划线)。每次它检查是否安装了 php_pdo 时,都会发现它没有安装。不幸的是,安装 php-pdo 的次数并不重要,它永远不会是 php_pdo。
要解决此问题,请更改以下行:
package {"php_pdo":
Run Code Online (Sandbox Code Playgroud)
成为:
package {"php-pdo":
Run Code Online (Sandbox Code Playgroud)