Debian
通過 Puppet 安裝 Tomcat7 的最簡單方法是什麼?
我正在嘗試建構簡單的 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
,我仍然有這些錯誤:錯誤:/階段
$$ main $$//包裹$$ 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 應該自動處理依賴關係,所以應該工作的簡單清單是:
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 }
以確保沒有在機器上安裝有衝突的軟體包。