在一个干净的 Debian 系统上——没有安装 Rubygem——我想安装一个带有 Puppet 的 Rubygem 包(版本 2.7.13)。所以这个包有“gem”作为包提供者。
到目前为止,这是我的清单(我保持简单):
# test.pp
Package { ensure => 'installed' }
package {
'rubygems' :
name => 'rubygems',
}
package {
'libldap-ruby1.8' :
name => 'libldap-ruby1.8',
}
package { 'libldap2-dev' :
name => 'libldap2-dev',
}
package { 'libsasl2-dev' :
name => 'libsasl2-dev',
}
package { 'libsasl2-modules-ldap' :
name => 'libsasl2-modules-ldap',
}
# My Rubygem, with Provider type 'gem'
package {
'ruby-ldap' :
name => 'ruby-ldap',
provider => 'gem',
}
Package [ 'rubygems' ] -> Package [ 'ruby-ldap' ]
Package [ 'libldap2-dev' ] -> Package [ 'ruby-ldap' ]
Package [ 'libsasl2-modules-ldap' ] -> Package [ 'ruby-ldap' ]
当我测试这个清单(使用puppet apply --noop test.pp
)时,我得到以下输出:
err: /Stage[main]//Package[ruby-ldap]: Provider gem is not functional on this host
我在网上挖掘并找到了一些关于 Puppet+Rubygems 的信息(例如this),但这些信息都没有帮助我解决我的问题,因为没有一个提供了一些代码的真正解决方案。
我还尝试使用类和阶段(在 gem 安装之前的阶段中进行 rubygem 安装),但我总是得到Provider gem
-error(但也许我只是以错误的方式使用了阶段)。
谁能给我一个工作清单,在没有 Rubygems 的系统上安装 rubygems 和任何 rubygem,或者至少提供如何到达那里的最终提示?