Sha*_*den 9 package-management ubuntu puppet vmware-tools
在理想的世界中,配置 puppet 来安装open-vm-tools应该像这样简单:
class vm-tools {
package { 'open-vm-tools':
ensure => installed
}
package { 'open-vm-dkms':
ensure => installed
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这开启了一个丑陋的依赖蠕变;它安装 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
Run Code Online (Sandbox Code Playgroud)
默认情况下始终安装推荐的软件包。在安装被描述为“CLI 工具”的包时,默认情况下安装 X 依赖项显然是不可取的。
由于这个原因,针对 Debian的功能请求立即被拒绝,但冷静的头脑在 Ubuntu 中并没有占上风。似乎在上周,有人认识到这是一个不明智的更改,但这在下一个 LTS 版本推出之前没有帮助。
安装推荐的软件包的行为很轻松地用在命令行上禁用--no-install-recommends选项,而是通过木偶有这样做没有支持,以及纠结 混乱的门票请求支持,并没有在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',
}
Run Code Online (Sandbox Code Playgroud)
但这显然是“做错了”。我是否遗漏了一些可以使这一切按预期方式工作的东西,或者这是解决此问题的最佳黑客解决方法?
Bug 1766表明 aptitude 提供程序安装推荐的软件包,而 apt 提供程序则不安装。
如果这是正确的(我自己没有验证过),那么以下内容可能会更干净地工作:
package { [ "open-vm-tools", "open-vm-dkms" ]:
ensure => installed,
provider => apt,
}
Run Code Online (Sandbox Code Playgroud)
改编自Puppet Type Reference,“package”部分。
进一步调查后编辑:由于 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";';
}
Run Code Online (Sandbox Code Playgroud)
并不完美,但比巨大的执行行更简洁。
| 归档时间: |
|
| 查看次数: |
2210 次 |
| 最近记录: |