为什么在Mac OS上安装Nokogiri失败并缺少libiconv?


159

我一直试图在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(如“ 安装Nokogiri ”中所述)之后,错误仍然存​​在。

尝试为Nokogiri运行安装时,似乎可以找到libxml2和libxslt,但不能找到libiconv。

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


您没有显示要使用的确切命令,因此我们将在黑暗中进行射击以试图回答。我总是使用gem install nokogiri,但是随后我使用RVM来管理Mac OS Ruby安装。libxml和libxslt与iconv无关,因此建议您在支持论坛的Nokogiri-talk提问。我不记得在安装Nokogiri时遇到任何iconv问题,而且我在一堆机器上都有它。
锡人

1
同时,我在github上打开了一张票:github.com/tenderlove/nokogiri/issues/442,其中包含更多信息。
Polarblau 2011年

2
这是解决OSX El Capitan上相同问题的链接,estebantorr.es
blog/2015/

sudo gem install nokogiri”。不要sudo用来安装gem或修改默认的Ruby。而是使用rbenv或RVM管理单独的Ruby。堆栈溢出对此进行了多次讨论。
Tin Man

您是否已尝试在安装nokogiri之前卸载xz
lifeisfoo '16

Answers:


237

我遇到过同样的问题。不幸的是,“ 安装Nokogiri ”没有涵盖Iconv问题。这是我解决问题的方法。

首先安装homebrew,它将使您的生活更轻松。如果您已经安装了它,请确保通过如下更新来获取最新的公式:

brew update

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

xcode-select --install

然后安装更高版本的libiconv

brew install libiconv

然后安装你的宝石

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

5
一旦完成了“ brew install libiconv”和“ brew link libiconv”的安装,便能够​​成功安装nokogiri。我希望这意味着我对brew安装的libiconv的特定版本没有严格的依赖。
史蒂芬·查宁

87
当我尝试将brew install libiconv其吐出时:错误:没有libiconv的可用公式Apple随OS X发行了libiconv,您可以在/ usr / lib中找到它。一些构建脚本无法正确检测到它,请检查现有公式以获取解决方案。
塞斯·布洛

62
如果您正在运行Mavericks,则可能需要安装Xcode的命令行工具:xcode-select --install。这为我解决了问题。
Michael Stalker 2013年

34
如果您仍然无法获得brew install libiconv正确的公式,请使用:brew tap homebrew/dupes
jamesdlivesinatree 2014年

15
OS X Yosemite(10.10)我不必做brew这些工作;只是xcode-select --install为我解决了这个问题。
bjfletcher 2014年

84

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

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

编辑:如果使用捆绑器,如Geoff所述,您可以执行以下操作:

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

5
如果使用捆绑程序-您可以运行“捆绑程序配置build.nokogiri --use-system-libraries”
Geoff Evason

1
终于,“捆绑配置build.nokogiri --use-system-libraries”起作用了。我讨厌发生这种情况
Nils Petersohn 2014年

1
在Mac OS 10.10 Yosemite上为我工作。
Lloyd Dewolf 2014年

为什么在gem install命令中间需要额外的“-”?
林布兰特·爱因斯坦

3
我在10.10.3。上失败了。带有的Xcode 6.3 libxml2 version 2.6.21 or later is required!
里维拉

36

@Cory的解决方案包含正确的答案,但是Mavericks上的解决方案实际上比顶级解决方案简单得多,因此我仅通过必要的步骤进行重新发布。

在Mavericks(OSX 10.9+)上:

安装Xcode命令行工具:

xcode-select --install

然后安装您的gem:

gem install nokogiri

4
适用于优胜美地。很高兴我向下滚动,没有使用较早的答案。
yuяi

节省大量时间,感谢这篇技巧!在特立独行者身上为我发挥了魅力
冰淇淋

您是否尝试过使用我的解决方案?它不需要xcode插入。
Filip Kis

这是Nokogiri文档(nokogiri.org/tutorials/installing_nokogiri.html#mac_os_x)的官方解决方案,并且是唯一适用于El Capitan的解决方案。公认的解决方案在那里不起作用。
约翰尼斯

在El Capitan上为我工作,真是令人生气。感谢您链接到Nokogiri文档@Johannes-真的很有用。每个人都应该远离说“使用系统库”的解决方案-不好的建议。
Polsonby

19

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

尝试gem install nokogiri在OSX Lion 10.7.2上时出现此错误。首先,该错误通过说libiconv丢失而掩盖了实际问题,因为即使nokogiri找不到libxslt或libxml2,您也会遇到相同的错误,而在我的情况下找不到。

因此,我按照http://nokogiri.org/tutorials/installing_nokogiri.html上Homebrew部分下的说明进行了修改(略作修改,以说明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 -建筑/

显然,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

再次,一切都很好。我希望这可以帮助其他人。


我遇到了同样的问题,但是我发现从opt / local / lib中删除以下文件:libz.dylib和libz.1.dylib,并按照其余说明进行操作。
分心

1
我认为/ opt / local表示MacPorts安装。如果您运行自制软件和Macports软件,最终将有些时髦(如您的情况所示)。最好的解决方案是卸载Macports,并将Homebrew用于软件包管理器。
科里2012年

我在下面为Mavericks(OSX 10.9+)添加了一个新的更简单的解决方案。
米卡·温克尔

17

只是在人群中增加了我的声音,但是mkmf.log说了一些关于无法找到x86_64体系结构的符号的信息。我偶然发现了这个解决方案:

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

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

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


1
同意您的nokogiri情绪。每一个 单。时间。
jbnunn 2015年

并非以这种形式为我工作,而是ARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries工作了……
bwoebi

这对我也很有效,更简单的解决方案,我没有使用ARCHFLAGS,只是sudo gem install nokogiri---use-system-libraries
ryudice

8

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

这在macOS上对我有用。它也适用于版本1.6.6.4


--with-xml2-include在Catalina上为我工作时没有选择权 gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
ryanc

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

5

我解决了这个上Yosemite运行Ruby 2.1.4

  1. 确保您已安装xCode 6.1,然后
  2. xcode-select --install, 然后
  3. 在AppStore中,单击更新并安装最新版本的命令行工具(显然是xcode-select --install不起作用-叹气)
  4. 然后bundle install像往常一样工作。

我也做了brew install libiconv同样的事情,但是我不确信需要采取这一步骤。


我不认为这brew install libiconv是必要的-我从不费心寻找合适的包装,这对我来说很好。当然,从我之前用ruby 2.1.1安装nokogiri以来,它可能就在我的机器上。
jmstone617 2014年

“在AppStore中,单击更新并安装最新版本的命令行工具(显然xcode-select --install不能执行-叹气)” –没有可用的更新。如何从Xcode更新我的命令行工具?它们不会显示在首选项窗格的“下载”部分中。
chadoh 2014年

这对我有用,而无需去应用商店。我更新了命令行工具和操作系统(升级到优胜美地),然后运行,xcode-select --install并且能够安装Nokogiri。

我必须做:xcode-select --install .. brew install libxml2 .. bundle config build.nokogiri --use-system-libraries .. bundle install
Zack Burt


3

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

强迫nokogiri在正确的位置找到库(我使用自制软件)对我来说是成功的窍门:

$ 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,


3

libiconv已从Homebrew 0.9中删除,现在建议从源代码编译libiconv,然后在安装nokogiri gem时参考安装。请参阅Nokogiri安装页面上Homebrew 0.9部分下的Nokogiri安装说明。


到目前为止,我已经能够运行$ brew install libiconv,它下载并安装了libiconv-1.14.tar.gz
Evolve

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。


2

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

简单(补丁)解决方案:删除/ usr / local / lib中的libiconv。*


我已经在MacPorts上安装了libxml2和libxslt,但是/ usr / local / lib中没有libiconv。*文件
Valerio Schiavoni 2014年

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 config,此处为代码

$ 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


2

我在山狮上遇到了类似的麻烦。原来我以前是通过rvm软件包安装libiconv的,对于ruby 1.9.3 / Mountain Lion / nokogiri不再需要。

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


2

您也可以在Mavericks上执行此操作:

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

只要确保您已安装xcode


相同的解决方案也适用于10.7.5:gem install nokogiri---use-system-libraries = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer /SDKs/MacOSX10.7.sdk/usr/include/libxml2
tolginho 2014年

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.刚安装了我的ruby版本(使用rbenv)5.做了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

1
在事后看来(始终为20/20),我可能只是将PATH env变量调整为先添加rbenv。
Sam Figueroa 2014年

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

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


链接和sudo会破坏事情。它们是桶装的,原因有很多。使用冲泡公式,因为这样更容易维护。 brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv

1

家酿使用者

如果使用自制软件,请更正解决此问题的解决方案:

xcode-select --install

从对话框中选择“获取Xcode”。

brew unlink libiconv
gem install nokogiri

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

然后,您需要从自制程序取消链接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,但是,如果您发现了这个问题,那么大概您将获得错误的安装,而不是全新的Mavericks安装。

这里的其他一些答案肯定是不正确的。他们中的大多数人试图通过自制程序来使用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用户

如果您具有/opt/local/lib/libiconv.dylib,则nokogiri将该路径添加到它搜索的目录列表中,它将找到MacPorts安装,类似于它拾取自制libiconv并与系统库冲突的方式。你可以试试:

sudo port uninstall libiconv

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

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

确认gem install nokogiri -- --with-iconv-dir=/opt/locallibiconv安装MacPorts时正常工作
PartialOrder'7

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 / local / Cellar / libiconv / 1.14


是--use-system-libraries和--with-iconv-dir的组合为我做到了
aaaarrgh '16

0

今天早上,在升级到Mavericks之后,我遇到了这个问题。我们做了很多事情。但是,如果有人遇到此问题,请尝试以下操作。

我运行了“ xcode-select --install”,然后安装了命令行工具(很奇怪,这在ugrade操作系统上没有更新)。我运行了“ rvm implode”(稍后将其构建)。

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

〜/ .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / gem_make.out

〜/ .vagrant.d / gems / gems / nokogiri-1.6.3.1 / ext / nokogiri / tmp / x86_64-apple-darwin12.5.0 / ports / libxml2 / 2.8.0 / configure.log

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

我跑了

输出包含:

...
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设置...

不确定其中的关键部分或顺序是否重要,但尝试重新创建似乎在使其正常工作中起作用的部分。


您确定命令gem install nokogiri成功吗?出现“已安装”消息或安装成功?
Spundun 2014年

是。在Mac上备份内容时,我已经重新安装了rvm和oh-my-zsh。我还无法弄清楚如何在rvm gemset上安装nokogiri。当我切换回“ rvm use system”时,可以在OS X ruby​​ 2.0.0p451上的1.5.6之上安装nokogiri 1.6.3.1。
亚伦·布莱斯2014年

最后对我来说是stackoverflow.com/questions/19643153/…brew 卸载apple-gcc42 brew安装apple-gcc42
aaron blythe 2014年

0

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

Nokogiri安装

故障排除

如果您在提及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

这已在使用xcode的clang编译器的OSX 10.9上进行了验证。


0

我将Mac OS升级到优胜美地时遇到了这个问题。我能够通过执行以下操作解决此问题:

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

0

我有一个类似的问题,被接受的答案曾经为我工作。现在,但是我一直看到一条新的错误消息,其中gmkdir缺少此问题的命令:

gem install nokogiri -v'1.5.11'由于以下原因而失败:/ usr / local / bin / gmkdir:没有这样的文件或目录

首先对我有用的是一些清理工作:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

然后,brew unlink libiconv以及需要取消链接的其他任何内容(请选中brew doctor)。然后,魔术两行(从链接的答案中复制):

brew install coreutils
gem install nokogiri

0

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

brew config

如果安装了CLT版本,则无需重新安装,请参阅此处。

这意味着问题在于您只允许重新安装bundler gem,而不能重新安装sudo。卸载捆绑程序并 gem uninstall bundler 重新安装gem bundler gem install bundler

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


-1

首先,请确保您遵循nokogiri上的安装指南:http ://nokogiri.org/tutorials/installing_nokogiri.html

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

首先,我使用自制软件安装了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

然后,使用新的红宝石版本创建一个宝石集:

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

-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

-1

这篇博客文章建议手动安装libiconv。

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

附带说明:安装nokogiri后,我设法安装了gollum(由于找不到iconv,安装也失败了)。现在,我仍然面临问题,因为启动gollum时,Python崩溃了。


-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-p0 gem安装中存在的2.0.0-p247中的MISSING /lib/iconv/iconv.so文件。

$ 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

注意:我正在使用rbenv,但是此问题特定于gem安装,应在上游解决。
达伦·韦伯

这个答案与nokogiri的构建所依赖的C libiconv库无关。答案应该真正删除。
lamont 2014年

-1

我必须先安装gcc才能运行 ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.