Я пытаюсь создать простой Марионеточный рецепт как указано ниже:
package { 'openjdk-7-jre-headless' : ensure => installed, }
package { 'tomcat7-common' : ensure => installed, }
package { 'tomcat7' : ensure => installed, require => Package['tomcat7-common'],}
package { 'tomcat7-admin' : ensure => installed, require => Package['tomcat7-common'], }
Однако, когда выполнено sudo puppet apply -v tomcat7.pp
, У меня есть все еще эти ошибки:
допустите ошибку: / Этап [основной]//Пакет, [tomcat7-общие] / удостоверяются: изменение от очищенного для представления отказавший: Выполнение '/usr/bin/apt-get-q-y-o DPkg:: Опции:: = - сила-confold устанавливают tomcat7-общие' возвращенные 100: Чтение списков пакета...
Следующие пакеты не встретили зависимости: tomcat7-распространенный:
Зависит: libtomcat7-java (> = 7.0.28-4+deb7u1), но это не будет установленным
E: Не мог исправить проблемы, Вы держали поврежденные пакеты.
И каждый раз, когда я добавляю новые пакеты, мой файл выращивает создание помех читать. Я должен действительно указать все зависимости от Tomcat вручную? Или есть ли какой-либо более простой способ сделать его?
Puppet должен обрабатывать зависимости автоматически, поэтому простой манифест, который должен работать, выглядит следующим образом:
package { [ 'tomcat7', 'tomcat7-admin' ]: ensure => installed, }
Однако в зависимости от проблем (например, при наличии старого Tomcat или сломанных зависимостей) эти проблемы следует решать вручную. Например, вручную запустив apt-get tomcat7
и проверив, что его блокирует (например, « Следующие пакеты будут УДАЛЕНЫ раздел»).
Используя Puppet, можно найти следующее обходное решение. :
package { "tomcat7":
ensure => latest,
require => Exec['apt-get update'],
}
Или путем определения отсутствует
(или очищено
), например:
package { [ 'tomcat6', 'tomcat6-common', 'libtomcat6-java','solr-tomcat' ]:
ensure => absent
}
, чтобы гарантировать, что конфликтующие пакеты не установлены на машине.