木偶安装了太多的依赖关系

我有一个puppet类“php”,如下所示:

     class php {
   case $ operatingsystem {
     debian:{
      包{'php5-common':
        确保=>最新,
         provider => apt,
        }
       package {'php5-mysql':ensure => latest,provider => apt}
       package {'php5-gd':ensure => latest,provider => apt}
       package {'php5-fpm':ensure => latest,provider => apt}
       package {'php5-mcrypt':ensure => latest,provider => apt}
       package {'php5-memcache':ensure => latest,provider => apt}
     }
   }

  服务{'php5-fpm':
    确保=>正在运行,
     enable => true,
   }
 } 

我将php类包含在/etc/puppet/manifests/site.pp中的节点configuration中

看起来像

节点“示例”{
  包括PHP
 }

当我在客户端上运行puppet agent -t时,会安装这些软件包,但是安装的太多了。 它也安装了Apache,我不知道它从哪里得到它。 我没有在puppet的任何configuration为Apache。

我想这是使用debian的build议或build议,但我不确定,因为我禁用了服务器上的。

 cat> /etc/apt/apt.conf.d/01norecommend 

客户端上的日志输出是

信息:检索插件
信息:在/var/lib/puppet/lib/facter/pe_version.rb中加载事实
 Info:将事实载入/var/lib/puppet/lib/facter/puppet_vardir.rb
信息:在/var/lib/puppet/lib/facter/last_run.rb中加载事实
 Info:将事实载入/var/lib/puppet/lib/facter/root_home.rb
 Info:将事实载入/var/lib/puppet/lib/facter/puppi_projects.rb
信息:在/var/lib/puppet/lib/facter/facter_dot_d.rb中加载事实
信息:eample的高速caching目录
信息:应用configuration版本“1383041633”
错误:无法预取包提供者'apt':US-ASCII中的无效字节序列
注意:/ stage [main] / Php / Package [php5-mysql] /确保:确保已将“已清除”更改为“latest”
注意:/ stage [main] / Php / Package [php5-gd] /确保:确保已将“已清除”更改为“latest”
注意:/ stage [main] / Php / Package [php5-mcrypt] /确保:确保已将“已清除”更改为“latest”
注意:/ stage [main] / Php / Package [php5-memcache] /确保:确保已更改'已清除'为'latest'
注意:/ stage [main] / Php / Package [php5-fpm] /确保:确保已将“已清除”更改为“latest”
注意:完成的目录在11.31秒内运行

之后安装以下软件包

ii apache2-mpm-prefork 2.2.22-13 amd64 Apache HTTP Server - 传统的非线程模型
ii apache2-utils 2.2.22-13 amd64实用程序的Web服务器
ii apache2.2-bin 2.2.22-13 amd64 Apache HTTP Server常见的二进制文件
ii apache2.2-common 2.2.22-13 amd64 Apache HTTP Server常用文件
ii libapache2-mod-php5filter 5.4.4-14 + deb7u5 amd64服务器端,embeddedHTML的脚本语言(apache 2 filter module)
ii libapache2-mod-php5filter 5.4.4-14 + deb7u5 amd64服务器端,embeddedHTML的脚本语言(apache 2 filter module)
ii php5-common 5.4.4-14 + deb7u5 amd64从php5源码构build的软件包的常见文件
ii php5-fpm 5.4.4-14 + deb7u5 amd64服务器端,HTMLembedded式脚本语言(FPM-CGI二进制)
ii php5-gd 5.4.4-14 + deb7u5 amd64用于php5的GD模块
ii php5-mcrypt 5.4.4-14 + deb7u5 amd64用于php5的MCrypt模块
ii php5-memcache 3.0.6-6 amd64用于PHP5的memcache扩展模块
ii php5-mysql 5.4.4-14 + deb7u5 amd64用于php5的MySQL模块

当我运行apt-get install $ php-package-names时,它不会安装apache,就在我使用apache的时候。 这有点烦人,因为我打算使用nginx。

你有一个想法,我怎么能傀儡安装包通常没有Apache作为依赖?

使php5-fpm安装在require的其他人之前。

gdmemcachemcryptmysql包需要虚拟包phpapi-20100525 ,它由libapache2-mod-php5php5-fpm

当您将它们安装在一个命令中时,它已经安装了满足要求的一个软件包。 当作为Puppet资源单独运行时,apt被迫select一个并selectApache库。