35

我可能走得太远了,超出了我的知识范围。我安装了Homebrew ,在它继续给我安装MacPorts的警告后,我卸载了它。但是现在我的 rspec 测试没有运行。

这些是我得到的错误:

/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri.rb:13:in `require': dlopen(/Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /opt/local/lib/libiconv.2.dylib (LoadError)
  Referenced from: /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
  Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but libiconv.2.dylib provides version 7.0.0 - /Users/mark/.rvm/gems/ruby-1.9.2-p180/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle
.....
.....

我已经通过 Homebrew 安装了 libiconv,但这并没有解决它。它抱怨 libiconv 版本号。这是问题吗?

这里发生了什么,我需要做什么?

4

4 回答 4

83

我让任何有兴趣的人重新开始工作。我删除并重新安装了 nokogiri gem,一切似乎又恢复了。

于 2011-04-25T22:22:00.060 回答
15

通常,此问题是由于找不到正确的 libiconv 引起的。这是我解决问题的方法:

检查输出otool -L /usr/lib/libiconv.2.dylib。我得到以下输出:

/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

然后我使用 Homebrew 安装 libiconv brew install libiconv,并使用brew list libiconv. 我得到以下输出:

/usr/local/Cellar/libiconv/1.14/bin/iconv
/usr/local/Cellar/libiconv/1.14/include/ (3 files)
/usr/local/Cellar/libiconv/1.14/lib/libcharset.1.dylib
/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
/usr/local/Cellar/libiconv/1.14/lib/ (3 other files)
/usr/local/Cellar/libiconv/1.14/share/doc/ (6 files)
/usr/local/Cellar/libiconv/1.14/share/man/ (6 files)

libiconv 安装在/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib. 然后我检查新安装的 libiconv 的版本, otool -L /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib我得到以下输出:

/usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib:
/usr/local/opt/libiconv/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

版本是正确的,我们需要让这个库对Ruby可用。创建符号链接是一种快速的解决方案:

sudo ln -s /usr/local/opt/libiconv/lib/libiconv.2.dylib /opt/local/lib/libiconv.2.dylib
于 2012-12-05T03:18:57.403 回答
0

除了 nokogiri 之外,我还必须重新安装 libxml-ruby 才能让事情再次运行。

于 2012-09-11T15:13:23.113 回答
0

FWIW,我遇到了同样的问题,如果您正在出售您的 gem,您将不得不从供应商/ruby 中删除有问题的 gem,因为 gem 卸载 + 重新安装并不总是有效的。我猜即使在运行全新安装时,bundler 也会留下 gems 的缓存残余物及其各自的库。

于 2014-09-30T14:39:40.353 回答