sudo gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/Users/sajeev86/.rvm/rubies/ruby-1.8.7-p352/bin/ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 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.
我无法让 Nokogiri 安装。这已经让我负担了一段时间了。我也通过MacPorts和Homebrew安装了依赖项。
我有一种感觉,正确的目录没有相互指向?但不知道如何解决。
在 Mavericks 中,使用 Homebrew 安装库并在安装 gem 之前设置NOKOGIRI_USE_SYSTEM_LIBRARIES=1
对我来说是有好处的。
总结:
-
如果以前已安装,请卸载 Gem:
$ gem uninstall nokogiri
-
使用自制软件安装
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"
这里的其他答案绝对不适合我。
在最新版本的Mavericks上,唯一成功的方法是:
$ brew install libxml2 libxslt libiconv
$ sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
同样的问题发生在我身上。花了几个小时阅读帖子,尝试自制软件,macports等。 当我找到这篇文章并阅读.rvm/gems/ruby-1.8.7-p358/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log的内容时,我看到了:
find_header: checking for libxml/parser.h... -------------------- no
"/usr/bin/gcc-4.2 -E -I. -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/lib/ruby/1.8/i686-darwin10.8.0 -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/Users/me/.rvm/rubies/ruby-1.8.7-p358/include -I/usr/include -I/usr/include/libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -g -O2 -fno-common -pipe -fno-common -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include <libxml/parser.h>
/* end */
但是,gcc-4.2并不存在:
$ ls /usr/bin/gcc*
/usr/bin/gcc
因此,我能够解决这个问题,并通过使 gcc-4.2 成为 gcc 的符号链接来安装nokogiri。
sudo ln -s gcc gcc-4.2
我在 Mavrick 遇到了同样的问题,解决方案是
xcode-select --install
但是,这不起作用,因为苹果下载页面没有公开可用的安装程序。因此,如果您想拥有Mavricks的命令行工具,则需要拥有付费帐户,那么只有您才能安装它。安装后,您将不会遇到Nokogiri的此问题。
检查错误消息中给出的网址 (http://nokogiri.org/tutorials/installing_nokogiri.html( 我认为问题是你使用的是哪个版本的自制软件?
brew -v
我会更新到 0.8+
brew update
brew upgrade
然后再次尝试安装:
brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
至于我,它有帮助:
brew install libxml2 libxslt
如果权限被拒绝sudo chown -R $USER /Library/Caches/Homebrew
sudo env ARCHFLAGS="-arch x86_64"
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
brew install libxml2 libxslt
gem install nokogiri -v '1.6.5' -- --use-system-libraries
晚了,但如果有人在使用MacPorts时仍然遇到此问题:
将/include 目录添加到 .profile 文件中的 PATH 中,以便 nokogiri 知道在哪里可以找到它。
例如
MacPorts 写入您的 .profile 文件,并在默认情况下添加以下行:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
首先,添加/include 路径,如下所示:
export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/include/:$PATH
然后,从同一终端窗口运行以下命令:
source ~/.profile
(这会告诉您的终端重新检查 .profile 文件是否有任何更改(
最后,尝试从同一终端窗口安装 gem。
sudo gem install nokogiri
在优胜美地上,我使用了:
brew install libxml2 libxslt
sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
非常接近上面的一些命令,但没有libconv
对于我遇到上述问题的过时系统,特别是:
FENG-SHUI:demo Eric$ brew install libxml2
==> Downloading ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching patching file threads.c patching file xpath.c
==> ./configure --prefix=/usr/local/Cellar/libxml2/2.9.0 --without-python
==> make
==> make install
==> Caveats This formula is keg-only: so it was not symlinked into /usr/local.
Mac OS X already provides this software and installing another version in parallel can cause all kinds of trouble.
Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:
LDFLAGS: -L/usr/local/opt/libxml2/lib
CPPFLAGS: -I/usr/local/opt/libxml2/include
Error: Failed to create: /usr/local/opt/libxml2
Things that depend on libxml2 will probably not build.
==> Summary /usr/local/Cellar/libxml2/2.9.0: 273 files, 11M, built in 2.0 minutes
FENG-SHUI:demo Eric$ brew install libxml2 libxslt
Error: libxml2-2.9.0 already installed
Error: /usr/local/opt/libxml2 not present or broken Please reinstall libxml2. Sorry :(
这是让 libxml2 和 libxslt 愉快运行的神奇公式:
# latest version 2.9.0
brew install libxml2
# installing libxslt from source code
# get latest libxslt from ftp://xmlsoft.org/libxml2/libxslt-git-snapshot.tar.gz..
# then
./configure --prefix=/usr/local/Cellar/libxslt/1.1.28 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.9.0
make
sudo make install
# installing nokogiri with this new compiled libs
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
感谢这个人:https://gist.github.com/fabioyamate/443160
希望这对某人有所帮助!
尝试将--with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib
添加到您的命令中,假设这是MacPorts libxml2的位置。
挣扎了几个小时,直到我找到了这篇博文:http://www.markhneedham.com/blog/2010/07/08/installing-ruby-1-9-2-with-rvm-on-snow-leopard
运行命令
file/usr/local/lib/libxml2.2.dylib
在返回的终端中
/usr/local/lib/libxml2.2.dylib: Mach-O 动态链接的共享库 i386
这意味着我的libxml2.2是为32位系统编译的,所以我不得不为64位操作系统(Lion(重新编译libxml2
首先,我从 ftp://xmlsoft.org/libxml2 下载了LATEST_LIBXML2并运行以下命令:
TAR XZVF LATEST_LIBXML2
光盘 libxml2-2.8.0
./configure --with-python=/System/Library/Frameworks/Python.framework/Versions/2.3/
做
然后我从同一站点下载了LATEST_LIBXSLT并运行了以下命令:
TAR XZVF LATEST_LIBXSLT
CD libxslt-1.1.26
。/配置
做
须藤制作安装
运行
file/usr/local/lib/libxml2.2.dylib
再次返回
/usr/local/lib/libxml2.2.dylib:Mach-O 64 位动态链接共享库x86_64
我终于可以安装nokogiri了!
这在 OSX 上对我有用 - 与@remeberer的答案相同,但具有完整的路径。
sudo ln -s/usr/bin/gcc/usr/bin/gcc-4.2
我必须使用此命令才能工作:
sudo gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries
(来源:http://www.virtlab.cx/ruby-fix-error-install-nokogiri-yosemite/,非常感谢作者(
Mountain Lion上遇到了类似的安装问题,除了make命令在/usr/local/opt/apple-gcc42/bin中查找gcc-4.2
这为我解决了这个问题;无需安装 libxml2 或 libxslt 或添加 --with 选项:
mkdir -p /usr/local/opt/apple-gcc42/bin
ln -s /usr/bin/gcc /usr/local/opt/apple-gcc42/bin/gcc-4.2
如果您要安装旧版本的 Nokogiri,即 1.6 之前的版本,这可能会有所帮助:
在Nokogiri安装指南中,他们提到:
因为Nokogiri需要编译和动态链接 无论是 libxml2 还是 libxslt,它都赢得了声誉 安装复杂。
从Nokogiri 1.6开始,libxml2和libxslt源代码与 Nokogiri,并在 gem-install-time 编译。此文档应该有效 适用于所有版本 1.6.4 及更高版本。
(如果您需要支持安装早期版本的 Nokogiri,您可以 可能想看看这个文档的 git 历史记录。
确实,安装起来很困难,但有办法。我翻阅了自述文件的历史,并决定使用写得很好的提交消息:
"自制的,我直接讨厌你。">
从该消息和此处的其他答案中,我了解到在安装 Nokogiri 时,我需要非常具体地了解 libxml2 的 lib、dir 和 include 目录。以下内容对我有用,但请更新以匹配您的 libxml2 软件版本(我的软件2.9.2
,我正在安装 Nokogiri 1.5.0
(:
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -v '1.5.0' --
--use-system-libraries
--with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib
--with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config"
--with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"
--with-xml2-dir=/usr/local/Cellar/libxml2/2.9.2/
--with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2
对我来说,我只是做了以下事情
xcode-select --install
gem install nokogiri
有关更深入的故障排除,请查看安装 Nokogiri