使用rspec时出错,在安装Homebrew和卸载MacPorts后缺少库

时间:2011-04-19 09:14:18

标签: nokogiri rsync macports homebrew libiconv

我可能已经走得太远了。我安装了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 个答案:

答案 0 :(得分:83)

我让任何有兴趣的人都能再次工作。我删除并重新安装了nokogiri gem,一切似乎都在恢复。

答案 1 :(得分: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 brew install libiconv安装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

答案 2 :(得分:0)

除了nokogiri之外,我不得不重新安装libxml-ruby才能让事情重新开始。

答案 3 :(得分:0)

FWIW,我遇到了同样的问题,如果您供应宝石,则必须从vendor / ruby​​中删除违规的gem ,因为gem uninstall +重新安装并不总是有效。即使在运行全新安装时,我也猜测捆绑包会留下缓存的宝石残余及其各自的库。