在Chef配方中,如何为Ruby指定特定的补丁级别?

时间:2013-11-23 19:01:48

标签: ruby linux chef

我正在与其他人的厨师食谱合作,它包括对我服务器上安装1.9.3p0的过程的参考:

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 个答案:

答案 0 :(得分:1)

The documentation可能会在这里澄清一点:

  

package告诉厨师 - 客户使用十六种中的一种   在chef-client运行期间提供者,使用的提供者   由厨师 - 客户端取决于机器的平台上   厨师 - 客户运行正在进行

因此,在基于Debian的系统(如编写配方的系统)上,Chef会自动将package资源解析为apt_package资源,该资源将调用apt-get来安装{{ 1}}。

现在,由于没有主流的Linux发行版或FreeBSD打包多个Ruby的补丁级别(并且在某些情况下,声明的补丁级别不是它们看起来的那样),您可能不希望使用ruby1.9.3来得到Ruby。最有可能的是,您最终希望使用类似the bash resource的内容从源代码构建它。

package对于安装Ruby先决条件仍然有用,您可以在供应商的软件包存储库中使用它而不会出现问题。