为什么在 Mac 操作系统上安装 Nokogiri 会失败,而 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

经过大量的网络帮助,包括构建和安装 libxml2和 libxslt,使用 brew 和从源代码构建 libiconv (如“ 安装 Nokogiri”中所述) ,错误仍然没有改变。

在尝试运行 Nokogiri 的安装时,libxml2和 libxslt 似乎没有问题,但 libiconv 不行。

有没有更了解这些事情的人知道如何安装 Nokogiri?

77687 次浏览

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

查看 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,

我有同样的问题。不幸的是“ 安装 Nokogiri”不包括 Iconv 的问题。这里是我如何解决这个问题。

首先安装 自酿的,它将使您的生活更容易。如果你已经安装了它,一定要通过如下更新来获取最新的公式:

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

假设您使用 MacPorts 安装了 libxml2和 libxslt,那么由于调用 have _ func (‘ iconv _ open’,‘ iconv.h’)所使用的包含路径和链接路径的顺序不匹配,您可能仍然会得到这个错误

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

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

在遵循了指南之后,我仍然有这个问题,我是这样解决它的:

首先,我使用自制程序安装 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

我尝试了很多方法,但都没有效果。最后我终于找到了 Iconv 文档,它拯救了我的一天!

我终于解决了这个问题,以上的解决方案都没有完全解决我的问题。

在 OSXLion 10.7.2上尝试 gem install nokogiri时,我得到了这个错误。首先,这个错误通过说 libiconv 丢失来掩盖真正的问题,因为即使 nokogiri 找不到 libxslt 或 libxml2,您也会得到相同的错误,而在我的例子中,它找不到 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

一切都很好。我希望这能帮到其他人。

$ 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 安装,您应该在安装之前应用 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

Libiconv 已经从 Homebrew0.9中删除了,现在建议从源代码中编译 libiconv,然后在安装 nokogiri gem 时引用安装。请参阅 Nokogiri 安装页面上 Homebrew0.9部分下的 Nokogiri 安装说明

在我的例子中,(和 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

我在美洲狮也遇到过类似的麻烦。原来我之前已经通过 rvm 包安装了 libiconv,这对于 ruby 1.9.3/Mountain Lion/nokogiri 来说已经没有必要了。

遵循 https://rvm.io/packages/的建议,我删除了 $rvm _ path/usr 目录并重建了 ruby 1.9.3。此后,安装 nokogiri 是一个简单的宝石安装。不要干扰酿造/macports/手动源安装!

你得把自制程序升级到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

您应该再次检查文件夹库版本。

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

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

顺便说一句: 在安装了 nokogiri 之后,我设法安装了 gollum (安装也失败了,因为它找不到 iconv)。但是,现在我仍然面临一些问题,因为当我启动 gollum 时,Python 会崩溃。

$ 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

在运行 ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1之前,我必须先安装 gcc

尝试使用系统库。OSX 在新版本中提供了 libiconv,但是默认的安装脚本似乎有问题

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

编辑: 如果使用 bundler,就像 杰夫提到的那样,你可以做到:

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

我按照 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 安装成功。

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

我运行了“ xcode-select —— install”,然后安装了命令行工具(令人惊讶的是没有更新操作系统升级)。 我运行了‘ rvm implode’(稍后我将重新构建它)。

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

~/. varant.d/gems/gems/nokogiri-1.6.3.1/ext/nokogiri/gem _ make. out

O < o < o < o < o < o < o < o < o < o < o < o < o < o < o < o < o

这似乎表明 c 编译器使用了一个令人惊讶的设置。

我查了 Env

输出包含:

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

文件系统里没有这些文件。

在所有这些改变移动到一个新的终端窗口(所以一切都是新鲜的)。安装流浪者的架子(反过来安装 nokogiri)工作良好。

注意: 当在新窗口中运行‘ env’时,不再有 CC 或 CXX 的设置..。

不确定这其中的关键部分,或者顺序是否重要,但是试图重新创建那些似乎在这个过程中发挥作用的部分。

这对我有用:

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

如果你正在使用 Bundler,告诉它使用这个选项:

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

裁判

你也可以在小牛队这样做:

Gem install nokogiri —— use-system-library = true —— with-xml2-include =/Applications/Xcode.app/content/Developer/Platforms/MacOSX.Platform/Developer/SDKs/MacOSX10.9. sdk/usr/include/libxml2

只要确保已经安装了 xcode

  • 作为一个自包含的解决方案,我已经把 这个红宝石脚本作为一个要点放在一起,它应该可以用于最近的任何 Mac OS X/Homebrew 安装。
  • 你基本上只是依靠家酿的图书馆而不是过时的苹果图书馆。简单。
  • 可以通过将 bundle作为参数传递给 Bundler (而不是 gem)来配置和安装。

检查一下,请随意贡献——也许我们可以把它归结为一个脚本来修复它们!

我在用..。 OS X 10.9.4 家酿0.9.4

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

安装 自酿的 < a href = “ http://brew.sh/”> 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

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

关于小牛队(OSX 10.9 +) :

安装 Xcode 命令行工具:

xcode-select --install

然后安装你的 gem:

gem install nokogiri

自制用户

正确的解决方案,以解决这个问题,如果你正在使用自制:

xcode-select --install

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

brew unlink libiconv
gem install nokogiri

Xcode-select 步骤修复了 Xcode 安装和 Xcode 命令行实用程序安装。我发现我没有/usr/include/iconv.h,这是由于 O/S 升级或从备份中恢复出现了某种问题。如果在运行 Xcode-select 之后没有头文件和/usr/lib/libconv.dylib,那么很可能需要将 Xcode 从 Application 文件夹拖到回收站并重新安装,然后从 https://developer.apple.com/downloads/index.action手动下载 Xcode 的命令行工具并安装。

那你得把 libiconv 和自制软件解除连接。你不需要这个。而 clang 实际上会选择/usr/local/include/iconv.h over/usr/include/iconv.h,并且会 # 将 iconv _ open 定义为 libiconv _ open,然后链接到/usr/lib/libiconv.dylib,它没有 libiconv _ open,这就是导致 mkmf 失败找到 libiconv 的原因。您需要做的是删除 iconv.h 的链接,这样 nokogiri 就找不到它了。

那就正常建造 Nokogiri。

对于新用户,所有你需要做的就是用 xcode 安装 xcode-select 并安装 nokogiri,但是如果你发现了这个问题,那么想必你的安装是一个拙劣的安装,而不是新安装的 Mavericks。

这里的其他一些答案肯定是不正确的。他们中的大多数试图使用 libiconv 的自制程序,这是完全不必要的。答案是,brew link libiconv实际上造成的问题,叮当变得混淆,并试图读取自制头文件和链接对系统库。答案表明 --use-system-libraries很糟糕,因为 nokogiri 需要链接到它捆绑的 libxml2和 libxslt 库,因为这些库的其他版本与之不兼容。希望您从源代码中编译的答案实在是过于复杂,令人绝望。

译者:

  • 升级和/或修复 Xcode 安装
  • 断开你的自制 libiconv,因为尝试使用,只会导致问题
  • 正常建造 Nokogiri

RVM 用户

旧的 RVM 安装可能有一个 libiconv 隐藏在您的 RVM 目录的某个地方,这与您的系统库有冲突。有关更多信息,请参见 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

根据文档,对于 OSX 10.9和 Homebrew9.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

在 OSX 10.9 w/xcode 的 clang 编译器上验证了这一点。

我把 Mac 操作系统升级到约塞米蒂时遇到了这个问题。解决这个问题的方法是:

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

我在 Yosemite上用 Ruby 2.1.4解决了这个问题

  1. 确保您已经安装了 xCode 6.1,然后
  2. 那就 xcode-select --install
  3. 在 AppStore 中单击 更新并安装命令行工具的最新版本(显然 xcode-select --install不会这么做)
  4. bundle install正常工作。

我也做了一个 brew install libiconv,但我不相信这一步是必要的。

今天在 OS X 10.10优胜美地,我和 Nokogiri 吵了一会儿

我的环境因为某些原因变得一团糟。

which bundlewhich gem给我的是 /usr/bin/bundle/usr/bin/gem而不是 ~/.rbenv/shims/gem

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

之后,我: 切换回我的项目目录 卸载依赖项 3. (重新)安装依赖库: 做了一个 brew install libxml2 libiconv libxslt 4. 安装了我的 ruby 版本 Fresh (使用 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

只是把我的声音添加到人群中,但是 mkmf.log 说了一些关于找不到 x86 _ 64架构的符号的事情。我偶然发现了这个解决方案:

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

可能不能解决原始请求者的任何问题,但是这可以帮助某人。

附注: nokogiri 一直是我使用红宝石应用程序的最大障碍。每次有人依赖于不同的版本,我就得想办法构建它。我的问题每次都不一样。

这招对我很管用

Sudo env ARCHFLAGS = “-arch x86 _ 64”gem install nokogiri: 1.6.6.2—— use-system-library —— with-xml =/usr/local/Cellar/libxml2/2.9.3/—— with-iconv-dir =/usr/local/Cellar/libiconv/1.14

我也遇到过类似的问题,这个被接受的答案曾经对我很有用。然而,现在我看到一个新的错误消息,其中缺少一个 gmkdir命令,就像这个问题一样:

Gem install nokogiri-v & # 39; 1.5.11由于 make:/usr/local/bin/gmkdir: 没有这样的文件或目录而失败

对我来说,起作用的是首先清理一下:

brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt

然后,brew unlink libiconv和其他你需要解除链接(检查与 brew doctor)。然后,神奇的两行(从链接的答案中复制) :

brew install coreutils
gem install nokogiri

在开始卸载和安装任何东西之前要遵循的简单步骤。 检查是否安装了 CLT (命令行工具) :

brew config

如果 CLT 版本已经安装,不需要重新安装,请点击这里查看。

这意味着问题出在您有重新安装的权限时,只能使用 bundler gem 使其不能使用 sudo。 卸载包 gem uninstall bundler 重新安装 gem bundle gem install bundler

这里最重要的一点是安装 bundler gem 的权限,它永远不应该被忽略。

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

这招在 Macos 上很管用。 它也适用于 1.6.6.4版本