不兼容的库版本:nokogiri.bundle需要11.0.0或更高版本,但libxml2.2.dylib

时间:2013-09-16 00:30:22

标签: ruby-on-rails rspec

我在Hartl的教程中尝试运行rspec时遇到此错误。我搜索了错误,但它从来没有针对特定版本,修复程序实际上并没有解决我的问题。

/Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri.rb:28:in `require': dlopen(/Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-           1.6.0/lib/nokogiri/nokogiri.bundle, 9): Library not loaded:    /Users/Jimbo/.bundler/tmp/22862/gems/nokogiri-1.6.0/ports/i686-apple-   darwin11/libxml2/2.8.0/lib/libxml2.2.dylib (LoadError)
Referenced from: /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-  1.6.0/lib/nokogiri/nokogiri.bundle
Reason: Incompatible library version: nokogiri.bundle requires version 11.0.0 or later, but libxml2.2.dylib provides version 10.0.0 - /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri/nokogiri.bundle
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/nokogiri-1.6.0/lib/nokogiri.rb:28:in `<top (required)>'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/capybara-2.1.0/lib/capybara.rb:2:in `require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247/gems/capybara-2.1.0/lib/capybara.rb:2:in `<top (required)>'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
from /Users/Jimbo/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'

9 个答案:

答案 0 :(得分:38)

我建议您首先使用以下方式卸载Nokogiri:

sudo gem uninstall nokogiri

然后使用rubygems安装Nokogiri:

gem install nokogiri

如果这不起作用,Nokogiri上有一个open issue来支持libxml 2.9.0及更高版本。有一个libxml2-2.9.1 branch是为准备下一个libxml2版本而开始的。

然后尝试从你的Gemfile中的那个分支中拉出来:

gem "nokogiri", github: "sparklemotion/nokogiri", branch: "libxml2-2.9.1"

或安装旧版本的libxml2。

如果仍然无效,您可能还想尝试以下建议:What to do if libxml2 is being a jerk.

答案 1 :(得分:4)

不确定它是否对任何人有帮助,但我可以通过使用系统库来安装nokogiri

gem install nokogiri -- --use-system-libraries

答案 2 :(得分:3)

您的错误消息显示:

  

nokogiri.bundle需要11.0.0或更高版本,但需要libxml2.2.dylib   提供版本10.0.0

这让我觉得你的gem实际上需要一个比你的系统版本更新的libxml版本。你是如何安装libxml2的?如果您安装了自制程序,则可能需要尝试使用

进行升级
brew update
brew upgrade

我能够在OS X 10.9上安装带有Ruby 2.0.0p247的Nokogiri 1.6.0,然后在IRb中使用它。我用Homebrew进行了双重检查,实际上是keg-only。但是,Nokogiri似乎将自己的版本安装到gems/nokogiri-1.6.0/ports。在我的机器上,它位于x86_64-apple-darwin13.0.0。

答案 3 :(得分:3)

如果您安装了Homebrew,请尝试此操作。它解决了“nokogiri-1.6.1的解析文档”问题。这对我有用。

gem uninstall nokogiri libxml-ruby

它会根据你想要卸载多少问题向你提出一系列问题,对所有人回答“是”或“[y]”。

brew update
brew uninstall libxml2
brew install libxml2 --with-xml2-config
brew link --force libxml2
brew install libxslt 
brew link --force libxslt 

gem install nokogiri --no-rdoc --no-ri 

然后,在您的项目文件中:

bundle install 

答案 4 :(得分:0)

重新安装宝石并不适合我,也没有拉动特定分支。

它并不理想,但我发现回滚到1.5.9解决了这个问题。

答案 5 :(得分:0)

首先,检查你的libxml版本:

otool -L /usr/lib/libxml2.2.dylib

可以返回

/usr/local/opt/libxml2/lib/libxml2.2.dylib (compatibility version 11.0.0, current version 11.0.0)

/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)

然后你可以尝试重新安装libxml来升级它:

brew uninstall libxml2 libxslt
brew install libxml2 libxslt

之后,尝试重新编译包:

make clean
./configure
make
sudo make install

答案 6 :(得分:0)

第一个gem uninstall nokogiri 第二install nokogiri 第三个重启终端

开心

答案 7 :(得分:0)

在项目目录中尝试以下操作。

gem uninstall nokogiri

如果安装了多个版本,将出现提示询问要删除哪个版本。使用最后一个读取“所有版本”的选项。

接下来,在项目目录中运行bundle install。一旦安装完所需的宝石,您就应该做好了。

就我而言,我点击了最后一个选项“所有版本”,因为这不会损害我的项目,但是您可能需要基于不同项目的其他版本。

答案 8 :(得分:0)

Nokogiri 通常使用系统库。因此,您的 ruby​​ 已经安装了它,只需确保在开始捆绑安装之前运行了以下命令。

<块引用>

rvm 使用 ruby​​-2.2.4(您当前的 ruby​​ 版本)

有时候,你也需要先运行

<块引用>
  1. /bin/bash --login
  2. rvm 使用 ruby​​-2.2.4

注意:仅当您使用 rvm