不兼容的库版本: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
第三次重启终端
要开心
- 如何从引擎中使用FactoryGirl工厂
- RSpec:如何编写unit testing用例来接收在私有方法中引发的exception
- 缺少必需的参数:aws_access_key_id,aws_secret_access_key
- 来自Hartl教程的bundle exec rspec spec / requests / static_pages_spec.rb无效
- Hartl第11章Ajax未定义局部变量或方法`cookies’
- 我应该如何使用RSpec全局存根方法?
- rspec测试控制器post将我的参数从符号改为字符串并破坏我的测试
- 在RSpec 3请求中设置标头
- 与rspec-rails 3.0.1和shoulda的测试关联不起作用