在Ubuntu中通过Puppet安装open-vm-tools; 什么是小恶?

在一个理想的世界里,configurationpuppet来安装open-vm-tools应该是这样简单的:

 class vm-tools { package { 'open-vm-tools': ensure => installed } package { 'open-vm-dkms': ensure => installed } } 

但是,这开辟了一个丑陋的依赖性蔓延的jar头; 它会安装X,这显然不属于服务器。 从Ubuntu 10.04开始,这些软件包最终推荐使用GUI工具的open-vm-toolbox软件包:

 # apt-cache depends open-vm-dkms open-vm-dkms Depends: dkms Depends: make Suggests: open-vm-toolbox Recommends: open-vm-tools # apt-cache depends open-vm-tools open-vm-tools Depends: libc6 Depends: libfuse2 Depends: libgcc1 Depends: libglib2.0-0 Depends: libicu44 Depends: libstdc++6 Recommends: open-vm-source Recommends: open-vm-toolbox Recommends: ethtool Recommends: zerofree 

build议的软件包总是默认安装。 安装描述为“CLI工具”的软件包时,默认情况下安装X依赖关系显然是不可取的。

针对Debian的function请求立即被拒绝,但是在Ubuntu中没有冷静的头脑 。 看起来在上周内,人们已经认识到这是一个不明智的变化 ,但是直到下一个LTS发布之前,这是没有任何帮助的。

使用--no-install-recommends选项在命令行中很容易禁用安装推荐软件包的行为,但是通过puppet不支持这样做,而且要求这种支持的票据 混乱 不堪 3年。

另一种select是通过apt.conf在整个系统中禁用推荐的软件包,这是对软件包行为的巨大改变,其影响远远超出我的apt.conf

我已经放弃了这种懒惰的方式;

 exec { 'open-vm-tools install': command => '/usr/bin/apt-get install -y --no-install-recommends open-vm-dkms open-vm-tools', creates => '/usr/lib/open-vm-tools', } 

但这显然是“做错了” 。 我是否错过了一些可以使它们按照预期的方式工作的东西,或者这是这个问题最好的解决办法?

错误1766指出aptitude提供程序安装了推荐的软件包,而apt提供程序则没有。

如果这是正确的(我没有自己validation),那么以下可能会更干净地工作:

 package { [ "open-vm-tools", "open-vm-dkms" ]: ensure => installed, provider => apt, } 

改编自Puppet Type Reference,“package”部分 。


进一步调查后编辑:因为apt提供程序是Ubuntu和Debian的默认设置,请使用aptitude提供程序来为这些程序包添加合适的~/.aptitude/config

 package { [ "open-vm-tools", "open-vm-dkms" ]: ensure => installed, provider => aptitude, require => File["/root/.aptitude/config"]; } file { "/root/.aptitude/config": ensure => present, content => 'APT::Install-Recommends "0";'; } 

不完美,但比一个巨大的执行线更简洁。

看起来像12.04, apt-get install open-vm-tools不再安装X.

VMware Tools上的Ubuntu wiki