Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 如何让yum\u包资源在chef\u gem包之前运行?_Chef Infra_Chef Recipe - Fatal编程技术网

Chef infra 如何让yum\u包资源在chef\u gem包之前运行?

Chef infra 如何让yum\u包资源在chef\u gem包之前运行?,chef-infra,chef-recipe,Chef Infra,Chef Recipe,我正在写一个使用ruby_libvirt的配方,它需要libvirt-devel 所以我需要在chef_gem ruby_libvirt之前运行yum_-package libvirt-devel 我把yum_包放在厨师长宝石的食谱中,放在角色运行列表中。 我希望这会迫使这个问题 chef_gem似乎提前进行了评估。您是否尝试过将其置于ruby块下 yum_package "libvirt-devel" ruby_block 'chef_gem_gemname' do block do

我正在写一个使用ruby_libvirt的配方,它需要libvirt-devel

所以我需要在chef_gem ruby_libvirt之前运行yum_-package libvirt-devel

我把yum_包放在厨师长宝石的食谱中,放在角色运行列表中。
我希望这会迫使这个问题


chef_gem似乎提前进行了评估。

您是否尝试过将其置于ruby块下

yum_package "libvirt-devel"

ruby_block 'chef_gem_gemname' do
  block do
    chef_gem "gemname"
    ...
  end
end

由于
chef\u gem
在编译阶段安装ruby gems,您应该使
yum\u package
也在这个阶段运行

yum_package 'libvirt-devel' do
  action :nothing
end.run_action :install

chef_gem 'ruby_libvirt'
chef_gem
resource只能在chef需要安装一些gem的情况下使用(例如,当它在菜谱中进一步使用gem时)。如果您只需要安装gem,请使用
gem\u包
resource。它与任何其他资源一样,在执行阶段进行评估

yum_package 'libvirt-devel'
gem_package 'ruby_libvirt'

.

Chef gem设计为在编译时运行。它不应该在Ruby块中使用。@sethvargo这不是真的,你不能用
chef_gem
调用它,你必须像
chef::Provider::ChefGem
那样调用它。@abc123 chef_gem肯定在编译时运行-这是chef_gem和gem_包的主要区别:完美。我试试看。是的,因此我需要gem_包装。想要使用配方中的库。