Я использую атрибут install
пакета, чтобы убедиться, что данный пакет 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"
}
и исключение:
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