2012-05-10 73 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包。