2012-05-10 76 views
4

在一个干净的Debian系统上 - 没有安装Rubygems - 我想用Puppet(版本2.7.13)安装一个Rubygem包。所以这个软件包有一个“宝石”作为软件包的提供者。Puppet:在没有安装Rubygems的机器上安装Rubygem-package

这是我的表现至今(我一直是简单):

# 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-错误(但也许我只是用错误的方式使用了这些阶段)。

任何人都可以提供一个工作清单,在没有Rubygems的系统上安装rubygems和任何rubygem,或者至少最终提示如何到达那里?

+0

我发现只要安装包libldap-ruby就可以使用ruby-ldap,所以我不需要安装任何gem。不过,我想知道如何使用Puppet安装Rubygems。 – ifischer

回答

0

尽管我的问题应该使用Puppet 2.7.8(我使用2.7.13)来解决 - 请参阅this issue - 我很确定我在2.7.13中遇到了这个问题。

我在2.7.14安装的另一台机器上重新尝试了这个,在那里我可以用Puppet成功安装Rubygems和Rubygem包。