【问题标题】:Errors using rspec, missing libraries after installing Homebrew and uninstalling MacPorts使用 rspec 时出错,安装 Homebrew 和卸载 MacPorts 后缺少库
【发布时间】:2011-08-08 12:26:45
【问题描述】:

我可能迈出的一步超出了我的知识范围。我安装了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 版本号。是这个问题吗?

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

【问题讨论】:

  • libiconv*.dylib 安装在哪里,它们的名称中包含哪些版本号

标签: nokogiri rsync macports homebrew libiconv


【解决方案1】:

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

【讨论】:

  • 今天遇到了这个问题。
  • 这里有同样的问题。重新安装后,一切似乎都恢复了。谢谢!
  • 我用 RVM 创建了一个新的 gemset,然后它运行良好。
  • 删除和安装解决了这个问题。但我仍然要感谢 Nicholas 的详细指导
【解决方案2】:

一般来说,这个问题是由于找不到合适的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

【讨论】:

  • 我认为您可以将最后一步替换为:brew link --force libiconv 无论如何,您的回答是一个非常好的解决方案,因为它不涉及重新安装 nokogiri。
  • 谢谢!对我帮助很大!我不确定每个人,但我需要在 brew 找到libiconv 公式之前添加brew tap homebrew/dupes
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多