我在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'
答案 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 版本)
有时候,你也需要先运行
<块引用>注意:仅当您使用 rvm