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

我试图在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 `' 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 `' 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' 

我建议你首先使用以下方法卸载Nokogiri:

 sudo gem uninstall nokogiri 

然后使用rubygems安装Nokogiri:

 gem install nokogiri 

如果这不起作用,Nokogiri上有一个未解决的问题就是支持libxml 2.9.0及更高版本。 有一个libxml2-2.9.1分支 ,它是为准备下一个libxml2版本而开始的。

然后尝试从你的Gemfile中的那个分支拉出,如下所示:

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

或者安装旧版本的libxml2。

如果仍然不起作用,您可能还想尝试这里的建议: 如果libxml2是一个混蛋,该怎么办。

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

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

如果您安装了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 

您的错误消息说:

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下。

首先,检查你的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 

重新安装gem对我来说不起作用,也没有拉动特定的分支。

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

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

要开心