2010-08-13 42 views
2

试图安装一个宝石,但它无法找到标题,尽管他们指定:引入nokogiri编译错误 - 找不到库/头

sudo gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xml2-include=/usr/local/include/libxml2 --with-xslt-include=/usr/local/include/libxslt 
Building native extensions. This could take a while... 
ERROR: Error installing nokogiri: 
    ERROR: Failed to build gem native extension. 

/usr/bin/ruby extconf.rb --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xml2-include=/usr/local/include/libxml2 --with-xslt-include=/usr/local/include/libxslt 
checking for #include <libxml/parser.h> 
... no 
----- 
libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies. 

/usr/local/include/libxml2/libxml/parser.h文件不存在,所以我不不明白为什么这不起作用。

编辑:我在CentOS 5.4

+0

当您没有所有这些选项安装时会发生什么? – 2010-08-13 22:53:36

+0

实际上同样的事情发生。我从源代码btw安装,而且我确实在最后安装了'sudo make install',并在相应的目录中存在已编译的二进制文件。 – ehsanul 2010-08-13 23:35:57

回答

1

如果你深入研究/usr/lib/ruby/1.8/mkmf.rb你能弄清楚如何模拟这是发生在安装过程中的检查。在我的情况,我可以通过创建一个名为conftest.c包含文件做到这一点:

#include <libxml/parser.h> 

然后尝试运行被传递到try_do功能的命令。在我的情况下,这是:

gcc -E -I. -I/usr/lib64/ruby/1.8/x86_64-linux -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/usr/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/usr/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/usr/include -I/usr/include -I/usr/include/libxml2 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fno-strict-aliasing -fPIC -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -o conftest.i 

在我来说,我错过了gcc,这可能不是你,因为你说你从源代码编译正在打什么。但希望如果你运行这个命令,它应该给你一个你为什么不能在libxml2中加载的想法。

如果您有兴趣预制明显EPEL有一个rubygems-nokogiri包。很有可能我最终会走这条路。