Nokogiri gem无法在OS X Mavericks中安装

时间:2014-05-01 02:26:26

标签: ruby gem nokogiri osx-mavericks

安装失败,显示:

checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
checking for libiconv_open() in -liconv... no
libiconv is missing.

但是,查看nokogiri的mkmf.log,会显示以下错误:

ld: warning: ignoring file /usr/local/Cellar/libxslt/1.1.28/lib/libxslt.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libxslt/1.1.28/lib/libxslt.dylib

ld: warning: ignoring file /usr/local/Cellar/libxml2/2.9.1/lib/libxml2.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libxml2/2.9.1/lib/libxml2.dylib

ld: warning: ignoring file /usr/local/Cellar/libiconv/1.14/lib/libiconv.dylib, **file was built for x86_64 which is not the architecture being linked (i386)**: /usr/local/Cellar/libiconv/1.14/lib/libiconv.dylib

我安装了xcode及其命令工具。 我的〜/ .bash_profile有64位编译强制执行:export ARCHFLAGS =" -arch x86_64"

我通过Homebrew安装了libxml2,libxslt和libiconv,并且每个都是链接的。 我已尝试在没有ARCHFLAG的情况下安装所有这些.bash_profile。

我也按照我发现的方式安装apple-gcc42并进行链接。

我已尝试通过将路径传递到/ usr / local / Cellar /中的libxml2,libxslt和libiconv来安装nokogiri,但安装仍然失败,并出现与上述相同的错误。

我已经浪费了至少一天的时间 - 只是试图安装一个Ruby gem。我真的很想回到实际开发阶段。

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:21)

在实际安装gem之前设置NOKOGIRI_USE_SYSTEM_LIBRARIES=1对我有用。

汇总:

  • 如果以前安装过,请卸载gem:
    $ gem uninstall nokogiri

  • 如果需要,使用Homebrew安装libxml2libxsltlibiconv
    $ brew install libxml2 libxslt libiconv

  • 安装gem,指定要链接的库的路径:
    $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"

答案 1 :(得分:2)

  • 作为一个独立的解决方案,我将this ruby script as a gist放在一起,可以用于任何最近的Mac OS X / Homebrew安装。
  • 你基本上只是依靠Homebrew的库而不是过时的Apple库。简单。
  • 您可以通过传递gem作为参数来配置和安装Bundler(而不是bundle)。

检查一下,请随时提供帮助 - 也许我们可以将其归结为一个脚本来解决所有问题!

答案 2 :(得分:0)

  • 使用相应的XCode命令行工具检查HomeBrew是否已正确安装。
酿造医生

  • 您还可以通过XCode>进行检查。首

安装了有效的命令行工具后,我能够解决OSX Maverick升级后遇到的nokogiri错误。

还发现,在OS X Mountain Lion升级到Maverick之后,一些'brew'软件包已经过时了。 (例如qt,postgresql)

答案 3 :(得分:0)

这对我有用:

  1. 如果您还没有这样做,请安装XCode开发人员工具:$ xcode-select --install
  2. 使用自制软件来安装(或重新安装)libxml2,libxslt和libiconv:$ brew install libxml2 libxslt libiconv
  3. 安装nokogiri:gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
  4. 我在unmerged pull request找到了我需要的解决方案来更新Nokogiri教程。我建议如果其他人遇到此问题并且已经用尽了解决方案,请检查pull request list以查看是否有人提交了Nokogiri教程页面上的说明更新。

答案 4 :(得分:0)

来自github page 首先,你应该:  xcode-select --install 然后重新安装nokogiri。 这对我有用,而另一个建议没有。希望这有助于其他人。