我正在尝试在Centos 6.5上修复需要gems nokogiri和savon的配方。
由于简单
chef_gem 'nokogiri' require 'nokogiri' chef_gem 'savon' require 'savon'
不行(厨师说补丁libxml2 2.8.0返回错误),(编辑:这里是完整的错误http://pastebin.com/mUZVyZ4H )
我决定尝试与系统库安装nokogiri。
如果我直接在服务器上执行一切工作正常:
[vagrant@localhost ~]$ sudo /opt/chef/embedded/bin/gem install nokogiri -q --no-rdoc --no-ri -v "1.6.2.1" -- --use-system-libraries Building native extensions. This could take a while... Building nokogiri using system libraries. Successfully installed mini_portile-0.6.0 Successfully installed nokogiri-1.6.2.1 2 gems installed
但是,如果我使用命令通过Chef运行安装:
chef_gem "nokogiri" do options("-- --use-system-libraries") action :install end require 'nokogiri'
我收到一个错误:
------------------------------------ Expected process to exit with [0], but received '1' ---- Begin output of gem install nokogiri -q --no-rdoc --no-ri -v "1.6.2.1" -- --use-system-libraries ---- STDOUT: STDERR: ERROR: Error installing nokogiri: nokogiri requires Ruby version >= 1.9.2. ---- End output of gem install nokogiri -q --no-rdoc --no-ri -v "1.6.2.1" -- --use-system-libraries ---- Ran gem install nokogiri -q --no-rdoc --no-ri -v "1.6.2.1" -- --use-system-libraries returned 1
由于embedded式Ruby是1.9.3
[vagrant@localhost ~]$ /opt/chef/embedded/bin/ruby --version ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
我的猜测是厨师正在使用错误的gem二进制(系统Ruby是1.8.7),但我不知道为什么会发生这种情况,特别是因为之前的chef_gem 'nokogiri'似乎使用了正确的。
我错过了什么吗?