通过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开始,这些软件包最终都推荐了使用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-recommended选项在命令行上很容易禁用安装推荐软件包的行为,但是通过puppet不支持这样做,并且07007 mess tickets请求支持并没有走得太远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",provider => aptitude,require  => File["/root/.aptitude/config"];
}
file { "/root/.aptitude/config":
  ensure  => present,content => 'APT::Install-Recommends "0";';
}

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

猜你在找的Ubuntu相关文章