安装失败显示:
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
我还根据我找到的操作指南,制作并安装了apple-gcc42并进行了链接。
我曾尝试通过在/usr/local/Cellar/中传递libxml2、libxslt和libiconv的路径来安装nokogiri,但安装仍然失败,出现了与上面相同的错误。
我在这上面浪费了至少一天的时间——只是想安装一个Ruby gem。我真的很想回到实际发展中。
有人能帮忙吗?
在实际安装gem之前设置NOKOGIRI_USE_SYSTEM_LIBRARIES=1
对我来说很有用
总结:
-
如果以前安装过,请卸载gem:
$ gem uninstall nokogiri
-
如果需要,请使用Homebrew安装
libxml2
、libxslt
和libiconv
:$ 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"
- 使用适当的XCode命令行工具检查HomeBrew是否正确安装
冲泡刮刀
- 您也可以通过XCode>Preferences进行检查
安装了有效的命令行工具后,我能够解决OSX Maverick升级后遇到的nokogiri错误。
还发现,在OS X Mountain Lion升级到Maverick后,一些"brew"软件包已经过时。(例如qt、postgresql(
以下是对我有效的方法:
- 如果您还没有这样做,请安装XCode开发人员工具:
$ xcode-select --install
- 使用自制程序安装(或重新安装(libxml2、libxslt和libiconv:
$ brew install libxml2 libxslt libiconv
- 安装nokogiri:
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
我在一个未合并的pull请求中找到了我需要的解决方案,以更新Nokogiri教程。我建议,如果其他人遇到这个问题,并且已经用尽了这里的解决方案,请查看拉取请求列表,看看是否有人提交了对Nokogiri教程页面上的说明的更新。
来自github页面首先,您应该:xcode select--install然后重新安装nokogiri。这对我有效,而另一个建议则无效。希望这能帮助其他人。