2013-11-23 61 views
0

我與別人的廚師食譜工作,它由這些引用到我的服務器上安裝1.9.3p0的過程:在Chef食譜中,您如何爲Ruby指定特定的補丁級別?

package 'ruby1.9.3' 
package 'ruby1.9.1-dev' 

# set ruby 1.9 to be default 
execute 'update-alternatives --set ruby /usr/bin/ruby1.9.1' 
execute 'update-alternatives --set gem /usr/bin/gem1.9.1' 

ohai "reload" do 
    action :reload 
end 

我是新來的廚師,所以我不知道在哪裏這些軟件包駐留,但在食譜回購中沒有看到其他人蔘考他們,我猜這是指一箇中央回購。在那種情況下,我如何修改這個配方讓廚師(獨奏)爲我的服務器準備不同的補丁級別?

回答

1

The documentation可以在這裏明確的事情了一點:

package告訴廚師客戶端使用的十六個不同 供應商之一的廚師客戶端運行,其中由chef-使用 提供商中客戶依賴的計算機上的 廚師客戶端運行正在發生

所以在基於Debian的系統,這樣的食譜是書面的一個平臺上,廚師會自動解析package資源到apt_package資源,該資源將調用apt-get來安裝ruby1.9.3

現在,由於沒有任何主流Linux發行版或FreeBSD包裝了多個Ruby的修補程序級別(並且在某些情況下,所述的修補程序級別不是他們所看到的),因此您可能不想使用package來獲取Ruby。最有可能的是,你最終會希望使用類似the bash resource這樣的源代碼來構建它。

package對於安裝Ruby先決條件仍然有用,您可以從供應商的軟件包存儲庫中使用它,而不會出現問題。

+2

我強烈建議*不要*使用'bash'資源來安裝Ruby。取而代之的是依賴[RVM](https://github.com/fnichol/chef-rvm),[rbenv](http://community.opscode.com/cookbooks/rbenv)的預先烹飪書, [chruby](https://github.com/Atalanta/chef-chruby),或類似[this](https://github.com/cassianoleal/cookbook-ruby2)。 – cassianoleal

相關問題