我正在写一个使用ruby_libvirt的食谱,它需要libvirt-devel。
所以我需要在chef_gem ruby_libvirt之前运行yum_package libvirt-devel。
我把yum_package放在一个食谱中,作为chef_gem的头部,在角色运行列表中。
我希望这会迫使这个问题。
chef_gem似乎是提前评估的。
答案 0 :(得分:7)
当chef_gem
在编译阶段安装ruby gems时,你应该让yum_package
在这个阶段运行。
yum_package 'libvirt-devel' do
action :nothing
end.run_action :install
chef_gem 'ruby_libvirt'
但是, chef_gem
资源只应在Chef需要安装某些gem的情况下使用(例如,当它在配方中进一步使用它时)。如果您只需要使用gem_package
资源安装gem。它像执行阶段一样在任何其他资源中进行评估。
yum_package 'libvirt-devel'
gem_package 'ruby_libvirt'
答案 1 :(得分:-1)
你试过把它放在红宝石块下吗?
yum_package "libvirt-devel"
ruby_block 'chef_gem_gemname' do
block do
chef_gem "gemname"
...
end
end