2010-08-13 2 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 файл существует, так что я не» почему это не работает.

EDIT: Я на CentOS 5.4

+0

Что происходит, когда вы устанавливаете без этих параметров? –

+0

То же самое происходит на самом деле. Я установил из источника btw, и я сделал 'sudo make install' в конце, подтвержденный наличием скомпилированных двоичных файлов в соответствующих каталогах. – ehsanul

ответ

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. Хороший шанс я пойду по этому маршруту в конце.

Смежные вопросы