2012-09-25 69 views
1

我想在Ubuntu Precise中使用rbgccxml。这宝石需要nokogiri。因此,我首先安装了ruby-nokogiri(v1.5.0)Ubuntu软件包。然后我尝试通过'gem install'来安装rbgccxml,但它总是试图安装nokogiri(> 1.4)。为了防止这种情况,我使用了'gem install --ignore-dependencies rbgccxml'。ubuntu未找到ruby gem

$ gem which rbgccxml 
/var/lib/gems/1.8/gems/rbgccxml-1.0.3/lib/rbgccxml.rb 
$ gem which nokogiri 
/usr/lib/ruby/vendor_ruby/nokogiri.rb 

现在我得到奇怪的行为。下面的脚本:

require 'nokogiri' 
puts 'step 1' 
require 'rubygems' 
puts 'step 2' 
require 'rbgccxml' 
puts 'step 3' 

输出:

step 1 
step 2 
/usr/lib/ruby/vendor_ruby/1.8/rubygems/dependency.rb:247:in `to_specs': Could not find nokogiri (~> 1.4.0) amongst [rbgccxml-1.0.3] (Gem::LoadError) 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/specification.rb:771:in `activate_dependencies' 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/specification.rb:760:in `each' 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/specification.rb:760:in `activate_dependencies' 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/specification.rb:744:in `activate' 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems.rb:209:in `try_activate' 
from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:58:in `require' 
from test3.rb:8 

那么,为什么引入nokogiri信息,但发现需要不要求内部rbgccxml?

回答

1

rbgccxml指定nokogiri依赖性使用pessimistic version constraint如下:

gem "nokogiri", "~>1.4.0" 

这相当于:

gem "nokogiri", ">= 1.4.0", "< 1.5.0" 

这意味着rbgccxml需要版本引入nokogiri之前一个你的安装。

如果你不特别需要nokogiri 1.5.0,那么让rubygems解析并为你安装依赖关系。

+0

谢谢:)我不知道这个悲观的版本的事情。 – Knut