当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

在理想情况下,配置人偶以安装open-vm-tools应该很简单:

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

但是,这打开了一个丑陋的依赖依赖罐。它安装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

推荐的软件包始终默认安装。显然,在安装描述为”CLI Tools”的软件包时,默认情况下不希望安装X依赖项。

由于这个原因,feature request against Debian立即被拒绝,但是cooler heads did not prevail in Ubuntu却被拒绝了。似乎在上个星期内,有一些recognition that this was an ill-advised change,但这对下一个LTS发行版没有帮助。

使用--no-install-recommends选项可以很容易地在命令行上禁用安装推荐软件包的行为,但是通过puppet不支持这样做,并且混乱的票证要求支持已经3年了。

另一个选择是仅通过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',
}

但这显然是“做错了”。我是否缺少某种可以按预期方式工作的东西,或者这是解决此问题的最佳方法?

最佳办法

Bug 1766指示aptitude提供程序安装了推荐的软件包,而apt提供程序未安装。

如果正确(我自己尚未验证),则以下操作可能会更干净:

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

改编自Puppet Type Reference, “package” section


经过进一步研究后进行编辑:由于apt提供程序是Ubuntu和Debian上的默认提供程序,因此请对这些软件包使用aptitude提供程序,并为root添加合适的~/.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。

Ubuntu wiki on VMware Tools

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8435.html,未经允许,请勿转载。