Ошибка компиляции Nokogiri - Не удается найти библиотеки / заголовки - PullRequest
2 голосов
/ 14 августа 2010

Попытка установить гем, но он не может найти заголовки, несмотря на указание их:

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

1 Ответ

1 голос
/ 11 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...