20

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

9 回答 9

43

我建议您首先使用以下命令卸载 Nokogiri:

sudo gem uninstall nokogiri

然后使用 ruby​​gems 安装 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 是个混蛋,该怎么办。

于 2013-11-15T17:00:15.330 回答
7

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

gem install nokogiri -- --use-system-libraries
于 2016-01-25T13:29:18.540 回答
4

如果你安装了 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 
于 2014-05-08T19:03:27.617 回答
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 下。

于 2013-11-16T03:39:27.803 回答
1

gem uninstall nokogiri 二三install nokogiri 重启终端

要开心

于 2018-10-03T14:54:14.833 回答
1

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

gem uninstall nokogiri

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

接下来,bundle install在您的项目目录中运行。一旦完成安装所需的宝石,您就可以开始使用了。

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

于 2019-08-21T15:36:56.640 回答
0

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

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

于 2014-04-16T23:04:55.713 回答
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
于 2014-07-03T02:12:55.110 回答
0

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

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

有时,您还需要先运行

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

注意:仅当您使用rvm

于 2021-01-08T07:57:20.120 回答