【发布时间】:2015-09-11 10:58:24
【问题描述】:
有人可以帮助解决有关在运行 Chef 食谱的综合安装中使用 3rd 方 gem 的问题吗? 我想使用一个与综合包一起打包的“p4ruby”gem,应该可以在使用
的配方中使用require 'P4'
我得到了错误
cannot load such file -- P4
在安装目录我可以看到
./embedded/service/gem/ruby/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubyconf.h
./embedded/service/gem/ruby/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubydebug.h
./embedded/service/gem/ruby/2.1.0/cache/p4ruby-2015.1.0.gem
./embedded/service/gem/ruby/2.1.0/specifications/p4ruby-2015.1.0.gemspec
./embedded/service/gem/ruby/2.1.0/build_info/p4ruby-2015.1.0.info
./embedded/lib/ruby/gems/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubyconf.h
./embedded/lib/ruby/gems/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubydebug.h
./embedded/lib/ruby/gems/2.1.0/cache/p4ruby-2015.1.0.gem
我已通读 Chef 文档,发现我可以使用 chef_gem 或 gem_package 示例
gem_package 'p4ruby' do
end
然而,这总是试图编译 gem,这会导致我们的目标安装环境出现错误,因为我们不能期望像 make 和 g++ 这样的开发工具可用并且我们不想强制安装它们。
如何在不运行编译的情况下让 Chef “看到”这个 gem 或指定第 3 方 gem?这可能吗?
如果我确实在具有 make 和 g++ 的机器上使用 gem_package 以获取更多信息,我最终会在安装中得到以下内容目录(看起来与以前略有不同)。这是路径问题吗??我已经搜索了所有但找不到解决方案
./embedded/service/gem/ruby/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubyconf.h
./embedded/service/gem/ruby/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubydebug.h
./embedded/service/gem/ruby/2.1.0/cache/p4ruby-2015.1.0.gem
./embedded/service/gem/ruby/2.1.0/specifications/p4ruby-2015.1.0.gemspec
./embedded/service/gem/ruby/2.1.0/build_info/p4ruby-2015.1.0.info
./embedded/lib/ruby/gems/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubyconf.h
./embedded/lib/ruby/gems/2.1.0/gems/p4ruby-2015.1.0/ext/P4/p4rubydebug.h
./embedded/lib/ruby/gems/2.1.0/cache/p4ruby-2015.1.0.gem
./embedded/lib/ruby/gems/2.1.0/specifications/p4ruby-2015.1.0.gemspec
非常感谢您的帮助
【问题讨论】:
标签: ruby rubygems chef-infra gitlab-omnibus