【问题标题】:Incompatible library version: nokogiri.bundle requires version 11.0.0 or later, but libxml2.2.dylib库版本不兼容:nokogiri.bundle 需要 11.0.0 或更高版本,但 libxml2.2.dylib
【发布时间】:2013-09-20 01:35:30
【问题描述】:

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

【问题讨论】:

  • 我遇到了同样的错误:LoadError: cannot load such file -- nokogiri/2.3/nokogiri

标签: ruby-on-rails rspec


【解决方案1】:

我建议你先卸载 Nokogiri 使用:

sudo gem uninstall nokogiri

然后使用 ruby​​gems 安装 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.

【讨论】:

  • 那个分支已经不存在了
【解决方案2】:

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

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

【讨论】:

  • 以上没有任何帮助,这件事让它像魅力一样工作!谢谢!
【解决方案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】:

    你的错误信息说:

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

    【讨论】:

    • 谢谢,@Shepmaster。 Ryan 的回答对我有用(卸载并重新安装 nokogiri)。
    【解决方案5】:

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

    快乐

    【讨论】:

      【解决方案6】:

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

      gem uninstall nokogiri
      

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

      接下来,在您的项目目录中运行bundle install。一旦完成安装所需的 gem,你应该可以开始了。

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

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

            【解决方案9】:

            Nokogiri 通常使用系统库。所以,你的 ruby​​ 已经安装好了,只要确保你在开始 bundle install 之前运行了下面的命令。

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

            有时候,你也需要先运行

            1. /bin/bash --login
            2. rvm 使用 ruby​​-2.2.4

            注意:仅当您使用 rvm

            【讨论】:

              猜你喜欢
              • 2013-10-01
              • 2014-06-04
              • 2017-05-21
              • 2012-06-23
              • 1970-01-01
              • 2014-02-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多