Почему Puppet продолжает устанавливать пакет, даже если он уже установлен?
8592
michal
Я использую installатрибут пакета, чтобы убедиться, что данный пакет Xустановлен.
Однако, несмотря на то, что пакет установлен, он puppetпытается установить его снова и, конечно, выходит с исключением («X уже установлен»). Это не происходит, когда имя пакета совпадает с именем службы. Я использую местный RPM и провайдер RPM.
Как мне избежать этого исключения?
Я также реализовал обходной путь: если мне удастся установить RPM, я создаю файл с именем /X_DONE. Затем я устанавливаю зависимости на основе этого файла, а не пакета.
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
Если вы сможете опубликовать используемые вами классы / манифесты, вам будет проще диагностировать.
Torian 13 лет назад
0
Это старый, но ... Сохранение в / tmp копии любых пакетов, которые вам нужны, вероятно, тоже не идеально, так как это приведет к циклу, в котором очистка / tmp (при перезагрузке или, возможно, ночью) удалит rpm , и куколка будет копировать его обратно вниз. И вы будете тратить место в / tmp на RPM, который уже установлен. Вероятно, лучше настроить репозиторий yum или (особенно с «установленной» гарантией, а не «последней») установить с http-адреса.
dannysauer 8 лет назад
0
2 ответа на вопрос
9
Slartibartfast
Вы ссылаетесь на пакет по имени "php_pdo", но Puppet видит пакет как "php-pdo" (тире, не подчеркивание). Каждый раз, когда он проверяет, установлен ли php_pdo, он обнаруживает, что это не так. К сожалению, не имеет значения, сколько раз вы устанавливаете php-pdo, это никогда не будет php_pdo.
Чтобы решить проблему, измените строку:
package {"php_pdo":
быть:
package {"php-pdo":
вау, так $ имена такие «тяжелые». Большое спасибо, это освещает мою систему;)
michal 13 лет назад
0
0
Kit Ho
In fact, I don't think above is a correct answer.
Package name should be found according to its package manager.