2013-11-23 24 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

相关问题