我正在尝试根据配方在 Windows Server 2008r2 上安装 gem“sensu_plugin”和“mixlib-shellout”。在最后一个配方中,我有以下代码:
%w{ sensu-plugin mixlib-shellout }.each do |gem_plugin|
gem_package gem_plugin do
gem_binary("C:/opt/sensu/embedded/bin/gem")
options("--no-rdoc --no-ri")
action :install
end
end
然而,当我在自己的机器上运行该配方时,我收到错误“错误:执行 gem 时... (Errno::ENOENT) 没有这样的文件或目录 - U:/”。我发现,每当我尝试使用位于 chef-client 目录 (C:\opscode\chef\embedded\bin\gem) 中的 gem 二进制文件安装 gem 包时,都会引发最后一个错误。
问题是,我希望用来安装 gem 包的 gem 实际上位于 C:/opt/sensu/embedded/bin/gem,我已经在 gem_binary 选项中声明了它。
最后,看起来 chef 忽略了 gem_binary 选项并尝试从其自己的 gem 二进制文件安装它。
我设法让它在只有 1 个磁盘 (C:/) 的测试环境中工作,并且在那里可以正常工作。但是,一旦我进入安装了磁盘(U: 和更多)的实时环境,我就会收到上述错误。可能是因为 chef 正在寻找可能位于 U: 驱动器中的用户主页?
我看不出这个配置有什么问题。 gem_binary 真的指示要使用哪个二进制文件吗?