【问题标题】:Nokogiri gem fails to install in OS X MavericksNokogiri gem 无法在 OS X Mavericks 中安装
【发布时间】:2014-06-17 13:06:35
【问题描述】:

显示安装失败:

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,并且每个都是链接的。 我已经尝试在 .bash_profile 中不使用 ARCHFLAG 安装所有这些。

根据我找到的方法,我还 brew install apple-gcc42 和链接。

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

我至少为此浪费了一天时间——只是想安装一个 Ruby gem。我真的很想回到实际开发中。

有人可以帮忙吗?

【问题讨论】:

    标签: ruby gem nokogiri osx-mavericks


    【解决方案1】:

    在实际安装 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 NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri 足以让我安装它。这真的应该修复,安装不应该这么困难。我使用真正的 nokogiri 锯,例如 dozuki 锯,用它们来切割燕尾不是那么麻烦。
    • +1 对于这个解决方案,对我也有用(官方教程没有),但是这里是链接:nokogiri.org/tutorials/installing_nokogiri.html
    【解决方案2】:
    • 作为一个独立的解决方案,我整理了this ruby script as a gist,它应该适用于任何最近的 Mac OS X / Homebrew 安装。
    • 您基本上只是依赖 Homebrew 的库,而不是过时的 Apple 库。很简单。
    • 您可以通过将 bundle 作为参数传递来使用 Bundler(而不是 gem)进行配置和安装。

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

    【讨论】:

    • 感谢您提请我注意;它已得到修复,现在应该适用于所有人(已投票)。
    • 谢谢,我会再次测试它,但当时我的错误根源与安装的 ruby​​ 版本有关,所以我现在不能轻易尝试!
    【解决方案3】:
    • 使用适当的 XCode 命令行工具检查 HomeBrew 是否安装正确。

    酿酒医生

    • 您也可以通过 XCode > Preferences 进行检查

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

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

    【讨论】:

      【解决方案4】:

      这对我有用:

      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

      我在unmerged pull request 中找到了更新 Nokogiri 教程所需的解决方案。我建议如果其他人遇到此问题并在此处用尽了解决方案,请检查 pull request list 以查看是否有人提交了对 Nokogiri 教程页面上的说明的更新。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2013-11-10
          • 1970-01-01
          • 1970-01-01
          • 2014-03-20
          • 2014-01-01
          • 1970-01-01
          • 2014-08-15
          • 2015-03-19
          • 1970-01-01
          相关资源
          最近更新 更多