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

我可能已经超出了我的知识范围。 我安装了自制软件 ,在它继续给我警告安装了MacPorts之后,我卸载了它。 但是现在我的rspectesting不运行。

这些是我得到的错误:

/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版本号。 这是问题吗?

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

任何感兴趣的人都可以重新工作。 我删除并重新安装nokogirigem,似乎一切似乎再次工作。

一般来说, 这个问题是由于无法find正确的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 。 创build符号链接是一个快速解决scheme:

 sudo ln -s /usr/local/opt/libiconv/lib/libiconv.2.dylib /opt/local/lib/libiconv.2.dylib 

除了nokogiri之外,我不得不重新安装libxml-ruby来重新开始工作。

FWIW,我遇到了同样的问题,如果你正在供应商的gem,你将不得不从供应商/ruby删除违规的gem作为gem卸载+重新安装并不总是有效的。 我猜测捆绑器即使在运行全新安装时,也会遗留caching的gem及其各自的库。