我正在尝试构建简单的 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
,我仍然有这些错误:
错误:/Stage[main]//Package[tomcat7-common]/ensure:从清除更改为存在失败:执行'/usr/bin/apt-get -q -y -o DPkg::Options::=- -force-confold install tomcat7-common' 返回 100:正在读取包列表...
以下软件包具有未满足的依赖关系: tomcat7-common :
取决于:libtomcat7-java (>= 7.0.28-4+deb7u1) 但不会安装
E: 无法纠正问题,您持有破损的包裹。
每次我添加新包时,我的文件都在增长,难以阅读。我真的需要手动指定所有 Tomcat 依赖项吗?或者有没有更简单的方法?
Puppet 应该自动处理依赖关系,所以应该工作的简单清单是:
但是,根据问题(例如安装旧的 Tomcat 或损坏的依赖项),应手动解决这些问题。例如,通过手动运行
apt-get tomcat7
并检查阻止它的原因(例如,“以下包将被删除”部分)。使用 Puppet,有以下解决方法:
或者通过定义
absent
(或purged
),例如:以确保没有在机器上安装有冲突的软件包。