依赖关系通过Puppet安装Tomcat7最简单的方法是什么?

我正在尝试构build如下简单的Puppet配方:

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 ,我仍然有这些错误:

err:/ stage [main] //包[tomcat7-common] /确保:从purged改变为present失败:执行/ usr / bin / apt-get -q -y -o DPkg :: Options :: = -force-confold安装tomcat7-common'返回100:正在读取软件包列表…

以下软件包具有未满足的依赖关系:tomcat7-common:

取决于:libtomcat7-java(> = 7.0.28-4 + deb7u1),但它不会被安装

E:无法纠正问题,你已经拿破包了。

每当我添加新的软件包,我的文件越来越难以阅读。 我真的需要手动指定所有Tomcat依赖项吗? 还是有更简单的方法呢?

木偶应该自动处理依赖关系,所以应该工作的简单清单是:

 package { [ 'tomcat7', 'tomcat7-admin' ]: ensure => installed, } 

然而,根据问题(如安装旧的Tomcat或依赖关系),这些问题应该手动解决。 例如,通过手动运行apt-get tomcat7并检查是否阻塞了它(例如' 下面的软件包将被删除 '部分)。

使用Puppet,有以下解决方法:

 package { "tomcat7": ensure => latest, require => Exec['apt-get update'], } 

或者通过定义absent (或purged ),如:

 package { [ 'tomcat6', 'tomcat6-common', 'libtomcat6-java','solr-tomcat' ]: ensure => absent } 

以确保机器上未安装冲突的软件包。