为什么在Mac OS上安装Nokogiri失败并且libiconv丢失了?

时间:2011-04-03 09:54:50

标签: ruby macos nokogiri libxml2 libiconv

我一直在尝试在Mac OS 10.9.3上安装Nokogiri,无论我尝试什么,安装最终都会失败,并显示以下错误消息:

$ sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --help
    --clean
    --use-system-libraries
    --enable-static
    --disable-static
    --with-zlib-dir
    --without-zlib-dir
    --with-zlib-include
    --without-zlib-include=${zlib-dir}/include
    --with-zlib-lib
    --without-zlib-lib=${zlib-dir}/lib
    --enable-cross-build
    --disable-cross-build


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out

在网上找到很多帮助后,包括使用brew构建和安装libxml2和libxslt以及从源代码构建libiconv(如“Installing Nokogiri”中所述),错误保持不变。

当试图运行Nokogiri的安装时,似乎可以找到libxml2和libxslt,但不是libiconv。

任何对这些事情有更深入了解的人都知道如何安装Nokogiri?

33 个答案:

答案 0 :(得分:228)

我有同样的问题。不幸的是,“Installing Nokogiri”并未涵盖Iconv问题。以下是我解决问题的方法。

首先安装homebrew,它会让您的生活更轻松。如果您已经安装了它,请务必通过更新来获取最新的公式:

brew update

注意:在OSX 10.9+中,您可能需要安装xCode命令工具才能安装libiconv。

xcode-select --install

然后安装较新版本的libiconv

brew install libiconv

然后链接你的新iconv libs:

brew link libiconv

然后安装你的宝石

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

答案 1 :(得分:76)

尝试使用系统库。 OSX在较新版本中附带libiconv,但默认安装脚本似乎有问题

gem install nokogiri -- --use-system-libraries

修改:如果使用了Geoff提及的捆绑包,您可以这样做:

bundle config build.nokogiri --use-system-libraries

答案 2 :(得分:36)

@ Cory的解决方案包含正确的答案,但是Mavericks的解决方案实际上比顶级解决方案简单得多,所以我只需要重新发布必要的步骤。

On Mavericks(OSX 10.9 +):

安装Xcode命令行工具:

xcode-select --install

然后安装你的宝石:

gem install nokogiri

答案 3 :(得分:19)

我终于能够解决这个问题了。以上解决方案都没有为我完全修复它。

在OSX Lion 10.7.2上尝试gem install nokogiri时遇到此错误。首先,这个错误掩盖了真正的问题,因为说丢失了libiconv,因为即使nokogiri找不到libxslt或libxml2,你也会得到同样的错误,在我的情况下,它不能找到它。

所以我按照Homebrew部分下的http://nokogiri.org/tutorials/installing_nokogiri.html上的说明进行了修改(稍加修改以考虑更新版本的libxml2):

brew install libxml2
brew link libxml2

# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
sudo make install

此时我按照nokogiri网站上的指示尝试了

gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

但是,这仍然失败,因为从源代码构建libxslt时,它会将/include文件夹安装在一个时髦的地方。因此,您需要单独指定libinclude文件夹,如下所示:

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt

这仍然无效(同样的libiconv错误),所以我尝试指定所有三个必需的库(libxslt,libxml2和libiconv):

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8

现在我得到了一个不同的错误!这仍然是一个错误,但至少它是不同的。制作过程失败了:

in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64
呃,什么?经过大量的谷歌搜索,我遇到了这个奇迹帖子:http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not-of-required-architecture/

显然,OSX Lion附带了一些不良版本的libz库(libz.dylib, libz.1.dylib, libz.1.2.4.dylib),并且需要用Xcode SDK中的最新版本替换它们。文章解释得比我更好,所以请阅读上面的链接以获取具体说明。

一旦这些被替换,我就跑了

gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
再次,一切都很顺利。我希望这有助于其他人。

答案 4 :(得分:14)

只是将我的声音添加到人群中,但mkmf.log表示无法找到x86_64架构的符号。我偶然发现了这个解决方案:

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries

对于原始提问者可能无法解决任何问题,但这可能有助于某人。

旁注:nokogiri是我使用ruby应用程序的最大障碍。每当有人依赖于不同的版本时,我必须弄清楚如何构建它。我的问题每次都不一样。

答案 5 :(得分:6)

我正在使用.. OS X 10.9.4 Homebrew 0.9.4

这是我从这个线程成功安装nokogiri,修复丢失的libiconv的总结。

安装Homebrew http://brew.sh/ 或者使用下面的命令更新到最新的

brew update

安装libxml2 libxslt

brew install libxml2 libxslt

链接libxml2 libxslt

brew link libxml2 libxslt

如果您收到使用--force的警告,只需使用下面的命令

brew link --force libxml2 libxslt

安装xCode命令工具以使您能够安装libiconv

xcode-select --install

安装libiconv

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install

最后一步,安装nokogiri!

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

答案 6 :(得分:5)

我在Yosemite通过

运行Ruby 2.1.4时解决了这个问题
  1. 确保安装了xCode 6.1,然后
  2. xcode-select --install,然后
  3. 在AppStore中单击 updates 并安装最新版本的命令行工具(显然xcode-select --install不做 - 叹气)
  4. 然后bundle install正常工作。
  5. 我也做了brew install libiconv,但我不相信需要采取措施。

答案 7 :(得分:4)

我尝试过很多东西,但对我来说没什么用。然后我终于找到了iconv documentation并且它节省了我的一天!

答案 8 :(得分:3)

在mkmf文件中查看,nokogiri(或gem,我不知道)试图在/ op / local /中找到依赖项。对我来说,搜索它们并不是正确的途径。

强迫nokogiri在正确的位置找到libs(我使用自制软件)为我做了诀窍:

$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

也许在nokogiri中有一些东西需要解决......

HTH,

答案 9 :(得分:3)

libiconv已从Homebrew 0.9中删除了现在建议从源代码编译libiconv,然后在安装nokogiri gem时引用安装。请参阅Nokogiri install page

上的Homebrew 0.9部分下的Nokogiri安装说明

答案 10 :(得分:2)

gem install nokogiri -v'1.6.6.2'---use-system-libraries --with-xml2-include = $(brew --prefix libxml2)/ include / libxml2

这在macOS上对我有用

答案 11 :(得分:2)

查看gem的构建目录中的mkmf.log文件(例如/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log)。这有更多的信息。在我遇到这种情况时,Nokogiri专门将/ opt / local / lib添加到库搜索路径,GNU Backgammon在那里安装了一个不兼容的libiconv。

答案 12 :(得分:2)

我今天在OS X 10.10 Yosemite上与Nokogiri战斗了一段时间

出于某种原因,我的环境搞砸了。

which bundlewhich gem给了我/usr/bin/bundle/usr/bin/gem代替~/.rbenv/shims/gem

帮助我纠正的是sudo rm -i /usr/bin/gem /usr/bin/bundle

之后我: 1.切换回我的项目目录 2.卸载了依赖 3.(重新)安装了依赖库:做了brew install libxml2 libiconv libxslt 4.安装我的红宝石版新鲜(用rbenv) 做过gem install bundler 6. bundle install没有遇到任何问题。

之后

Nokogiri很好。

供参考:

╰─% cat .bundle/config           
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_JOBS: 4

╰─% which ruby bundle gem
~/.rbenv/shims/ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem

答案 13 :(得分:2)

你也可以在小牛队做到这一点:

gem install nokogiri - --use-system-libraries = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer / SDKs / MacOSX10.9。 SDK的/ usr /包括/ libxml2的

确保安装了xcode

答案 14 :(得分:2)

假设您使用MacPorts安装了libxml2和libxslt,那么由于调用has_func('iconv_open','iconv.h')所使用的包含路径和链接路径的顺序不匹配,您可能仍会收到此错误

简单(补丁)解决方案:删除/ usr / local / lib

中的libiconv。*

答案 15 :(得分:2)

$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

与上述相同,这是自制软件和使用gem install的解决方案(应用更改取决于您的版本)

但是,如果你使用Gemfile和bundle install,你应该在安装之前应用bundle配置,这里是代码

$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

再次,应用更改取决于您的版本

希望这会对你有所帮助。

信用:https://gist.github.com/1344331

答案 16 :(得分:2)

我在Mountain Lion遇到了类似的麻烦。事实证明我以前通过rvm软件包安装了libiconv,这对于ruby 1.9.3 / Mountain Lion / nokogiri来说已经不再需要了。

按照https://rvm.io/packages/的建议,删除了我的$ rvm_path / usr目录并重建了ruby 1.9.3。此后安装nokogiri是一个简单的宝石安装。没有搞乱brew / macports /手动源安装!

答案 17 :(得分:1)

HOMEBREW用户

如果您使用自制程序,请使用正确的解决方案解决此问题:

xcode-select --install

选择"获取Xcode"从对话框中。

brew unlink libiconv
gem install nokogiri

xcode-select步骤修复了Xcode安装和Xcode Command Line Utils的安装。我发现由于O / S升级或备份还原存在某种问题,我没有/usr/include/iconv.h。如果您在运行xcode-select后没有该头文件和/usr/lib/libconv.dylib,那么您很可能需要将Xcode从Application文件夹拖到垃圾箱并重新安装,然后手动下载命令行工具从https://developer.apple.com/downloads/index.action获取Xcode并安装。

然后你需要取消链接libiconv和自制软件。你不需要这个。并且clang实际上会在/usr/include/iconv.h上获取/usr/local/include/iconv.h并将#define iconv_open添加到libiconv_open但是然后链接到没有libiconv_open的/usr/lib/libiconv.dylib导致mkmf失败的原因是找到libiconv。您需要做的是删除iconv.h中的链接,以便nokogiri找不到它。

然后正常建立nokogiri。

对于新用户,您需要做的就是使用xcode-select安装xcode并安装nokogiri,但如果您发现了这个问题,那么可能是您安装了一个拙劣的安装而不是全新安装小牛队。

这里的其他一些答案肯定是不正确的。他们中的大多数人试图从自制软件中使用libiconv,这完全没有必要。 brew link libiconv实际上导致问题的答案,其中clang变得混乱,并尝试读取自制头文件并链接到系统库。建议--use-system-libraries的答案很差,因为nokogiri需要与其捆绑的libxml2和libxslt库链接,因为这些库的其他版本与它不兼容。希望您从源代码编译的答案无可救药地过于复杂。

TL; DR:

  • 升级和/或修复Xcode安装
  • 取消链接您的自制libiconv,因为尝试使用它只会导致问题
  • 通常建立nokogiri

RVM用户

旧的RVM安装可能会在您的rvm目录中隐藏与您的系统库冲突的libiconv。有关详细信息,请参阅https://stackoverflow.com/a/11809261/506908

MacPorts USERS

如果您有/opt/local/lib/libiconv.dylib,那么nokogiri会将该路径添加到它搜索的目录列表中,并且会发现MacPorts安装类似于它如何获取自制libiconv并与之冲突系统库。你可以尝试:

sudo port uninstall libiconv

如果由于依赖关系而失败,那么您可以尝试直接链接MacPorts版本(未经测试):

gem install nokogiri -- --with-iconv-dir=/opt/local

答案 18 :(得分:1)

这个对我有用

  

sudo env ARCHFLAGS =“ - arch x86_64”gem install nokogiri:1.6.6.2 - --use-system-libraries --with-xml = / usr / local / Cellar / libxml2 / 2.9.3 / --with -iconv-DIR =的/ usr /本地/地窖/ libiconv的/ 1.14

答案 19 :(得分:1)

您需要将自制软件升级到0.9

然后按照以下步骤进行操作

brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
sudo make install

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

您应该仔细检查文件夹库版本。

答案 20 :(得分:0)

根据文档,从OSX 10.9和Homebrew 9.5+开始,您可能缺少开发工具。

Nokogiri installation

故障排除

如果你有问题提到libiconv丢失,看起来像这样:

Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for          help with installing dependencies.
-----
*** extconf.rb failed ***

然后你可能错过了正确的开发人员工具。这是一个非常简单的解决方法:

brew unlink gcc-4.2      # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri

这已在OSX 10.9 w / xcode的clang编译器上得到验证。

答案 21 :(得分:0)

当我将Mac OS升级到Yosemite时,我遇到了这个问题。我能够通过以下方式解决这个问题:

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri

答案 22 :(得分:0)

今天早上我遇到了这个......升级到小牛队之后。我们做了很多事情。但是,如果有人遇到这个问题,可以尝试一些事情。

我跑了xcode-select --install'然后安装了命令行工具(感到惊讶的是没有在OS ugrade上更新)。 我跑了rvm implode' (我稍后会重新建立它。)

我们拼凑了两个错误输出文件:

〜/ .vagrant.d /宝石/宝石/引入nokogiri-1.6.3.1 / EXT /引入nokogiri / gem_make.out

〜/ .vagrant.d /宝石/宝石/引入nokogiri-1.6.3.1 / EXT /引入nokogiri / TMP / x86_64的-苹果darwin12.5.0 /端口/ libxml2的/ 2.8.0 / configure.log

这似乎表明c编译器正在使用令人惊讶的设置。

我跑了' env'

包含的输出:

...
CXX=/usr/local/opt/apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/apple-gcc42/bin/gcc-4.2
...

这些文件在文件系统中不存在......

所有这些变化都转移到新的终端窗口(所以一切都很新鲜)。 vagrant-berkshelf(安装nokogiri)的安装工作正常。

注意:运行' env'在新窗口中,不再有CC或CXX的设置......

不确定这一点的关键部分,或者订单是否重要,但是试图重新创建似乎在使其发挥作用的部分。

答案 23 :(得分:0)

我有一个类似的问题,并且接受的答案曾经适合我。现在,我已经看到一条新的错误消息,其中缺少gmkdir命令,如此问题:

gem install nokogiri -v '1.5.11' failed due to make: /usr/local/bin/gmkdir: No such file or directory

对我有用的是先清理一下:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

然后brew unlink libiconv以及您需要取消链接的其他内容(请与brew doctor核对)。然后,神奇的两行(从链接的答案中复制):

brew install coreutils
gem install nokogiri

答案 24 :(得分:0)

在开始卸载和安装任何组件之前,请执行简单的步骤。 检查是否安装了CLT(命令行工具):

brew config

如果已安装CLT版本,则无需重新安装。

这意味着问题在于您只允许重新安装bundler gem而不是sudo才能获得许可。 卸载捆绑 gem uninstall bundler 重新安装宝石捆绑器 gem install bundler

这里最重要的一点是安装捆绑器gem的许可,永远不要对它捆绑。

答案 25 :(得分:-1)

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

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

答案 26 :(得分:-1)

blog post建议手动安装libiconv。

随后,nokogiri可以安装许多开关告诉它在哪里找到libiconv(参见博客文章)。

作为旁注:安装nokogiri之后,我设法安装了gollum(安装也因为找不到iconv而失败)。现在我仍然面临着问题,因为当我启动gollum时,Python会崩溃。

答案 27 :(得分:-1)

这对我有用:

gem install nokogiri -- --use-system-libraries

如果您使用的是Bundler,请告诉它使用选项:

bundle config build.nokogiri --use-system-libraries
bundle install

ref

答案 28 :(得分:-1)

在运行./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

之前,我必须先安装gcc

答案 29 :(得分:-1)

在我的情况下,(与scotchi一样)由于/ opt / local / lib中的不兼容的iconv库,构建失败。 默认情况下,Nokogiri构建过程首先查看/ opt / local。 要强制它使用其他安装目录,例如/ usr / local,请执行:

gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include

答案 30 :(得分:-1)

首先请务必遵循nokogiri上的安装指南:http://nokogiri.org/tutorials/installing_nokogiri.html

在遵循指南之后,我仍然遇到了这个问题。这就是我解决它的方法:

首先我用homebrew安装了iconv:     brew install iconv

然后我卸载了ruby,幸运的是rvm很容易这样做:

rvm uninstall 1.9.2        

然后我不得不用以下选项重新安装ruby:

CC=gcc-4.2 rvm install 1.9.2-p290 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1

然后我用新的ruby版本创建一个gemset:

rvm use 1.9.2@coolproject

然后我最终可以像这样安装nokogiri:

gem install nokogiri -v=1.4.4 -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

答案 31 :(得分:-1)

我按照nokogiri安装页面的说明操作,并安装了xcode工具。但它仍然不适合我。

然后我看到brew install libxml2 libxslt命令输出以下内容(以及其他不同内容):

To allow the nokogiri gem to link against this libxslt run:
  gem install nokogiri -- --with-xslt-dir=/usr/local/opt/libxslt

所以,我运行这个并且nokogiri成功安装。

答案 32 :(得分:-1)

$ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247

$ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so*

$ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*

注意2.0.0-p247中的丢失/lib/iconv/iconv.so文件,该文件存在于2.0.0-p0 gems安装中。

$ rbenv version
2.0.0-p247 (set by /home/XXX/tmp/.ruby-version)
$ rbenv which gem
/home/XXX/.rbenv/versions/2.0.0-p247/bin/gem
$ gem --version
1.8.25

$ rbenv which pry
/home/XXX/.rbenv/versions/2.0.0-p247/bin/pry
$ pry
[1] pry(main)> require 'iconv'
LoadError: cannot load such file -- iconv/iconv.so
from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'

将文件复制到

$ pushd ~/.rbenv/versions/
$ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/

现在可以工作!

$ pry
[1] pry(main)> require 'iconv'
=> true