OS X Lion,尝试安装Nokogiri - libxml2缺失

33
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安装了依赖项。

我感觉可能是目录没有正确指向彼此?但是我不知道如何修复。

17个回答

1

我必须使用这个命令才能让它工作:

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/,非常感谢作者)


1

对于我来说,在OSX上这个方法行得通 - 和@remeberer的答案一样,但是需要使用完整路径。

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


1

尝试在命令中添加--with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib,假设这是MacPorts libxml2的位置。


1

我为此苦苦挣扎了数小时,直到我找到了这篇博客文章: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位系统编译的,因此我必须重新编译libxml2以适用于64位操作系统(Lion)

首先,我从ftp://xmlsoft.org/libxml2下载了最新的LATEST_LIBXML2,并运行了以下命令:

tar xzvf LATEST_LIBXML2 cd libxml2-2.8.0 ./configure --with-python=/System/Library/Frameworks/Python.framework/Versions/2.3/ make 然后我从同一网站下载了LATEST_LIBXSLT并运行了以下命令:
tar xzvf LATEST_LIBXSLT cd libxslt-1.1.26 ./configure make sudo make install
再次运行
file /usr/local/lib/libxml2.2.dylib
返回
/usr/local/lib/libxml2.2.dylib: Mach-O 64-bit dynamically linked shared library x86_64
最终我成功安装了nokogiri!

0

如果您正在安装旧版本的Nokogiri(即1.6之前的版本),这可能会有所帮助:

Nokogiri安装指南中提到:

Nokogiri需要编译和动态链接libxml2和libxslt,因此它因安装复杂而闻名。

从Nokogiri 1.6开始,libxml2和libxslt源代码与Nokogiri捆绑在一起,并在gem安装时进行编译。本文档适用于所有1.6.4及更高版本。

(如果您需要支持安装早期版本的Nokogiri,请查看本文档的git历史记录。)

确实,安装是困难的,但有方法可行。我查阅了readme的历史记录,并决定选择这个具有良好编写提交消息的版本:

"Homebrew,我很讨厌你。" 从这条消息和其他答案中,我得出了结论,在安装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

0

在Mountain Lion上遇到了类似的安装问题,只不过make命令在/usr/local/opt/apple-gcc42/bin中寻找gcc-4.2。

这对我解决了问题;无需brew install 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

0

对我来说,我只是简单地做了以下操作

xcode-select --install
gem install nokogiri

如需更深入的故障排除,请查看 安装 Nokogiri


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接