通过 Puppet 在 Ubuntu 中安装 open-vm-tools;哪个更害羞?

通过 Puppet 在 Ubuntu 中安装 open-vm-tools;哪个更害羞?

在理想情况下,配置 puppet 来安装open-vm-tools应该像这样简单:

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

但是,这会导致依赖性蔓延;它会安装 X,而这显然不属于服务器。从 Ubuntu 10.04 开始,这两个软件包都推荐使用open-vm-toolboxGUI 工具包:

# 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 工具”的软件包时,默认安装 X 依赖项显然是不可取的。

针对 Debian 的功能请求由于这个原因立即被拒绝,但是Ubuntu 中缺乏冷静的头脑似乎在过去一周内,认识到这是一次不明智的改变,但在下一个 LTS 版本发布之前这毫无帮助。

在命令行上,使用选项可以很容易地禁用安装推荐软件包的行为--no-install-recommends,但通过 puppet 不支持这样做,并且纠结 混乱请求的支持三年来一直没有取得任何进展。

另一个选择是通过 禁用整个系统中推荐的软件包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',
}

但这显然“做错了”。我是否遗漏了某些可以让这一切按预期运行的东西,或者这是解决此问题的最佳方法?

答案1

错误 1766表示 aptitude 提供商会安装推荐的软件包,而 apt 提供商则不会。

如果这是正确的(我自己还没有验证过),那么下面的方法可能会更干净:

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

改编自Puppet 类型参考,“包”部分


经过进一步调查后进行编辑:由于 apt 提供程序是 Ubuntu 和 Debian 上的默认提供程序,因此请使用 aptitude 提供程序来提供这些包,并添加适合~/.aptitude/configroot 的包。

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";';
}

虽然不完美,但比冗长的执行线更简洁。

答案2

看起来在 12.04 上apt-get install open-vm-tools不再安装 X。

Ubuntu wiki 上的 VMware Tools

相关内容