OS X Lion, Попытка установить Nokogiri - отсутствует libxml2 - PullRequest
33 голосов
/ 03 февраля 2012
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 голос
/ 21 апреля 2015

Мне пришлось использовать эту команду для работы:

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 голос
/ 03 сентября 2013

Это сработало для меня в OSX - так же, как и ответ @ запомнить, но с полным путем.

1 голос
/ 04 июня 2012

Я боролся с этим несколько часов, пока не нашел этот пост: 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)

Сначала я скачал LATEST_LIBXML2 с ftp: // xmlsoft.org / 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: 64-битная динамически связанная общая библиотека Mach-O x86_64

И я наконец смог установить nokogiri!

1 голос
/ 03 февраля 2012

Попробуйте добавить --with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/lib к вашей команде, предполагая, что именно там MacPorts libxml2.

0 голосов
/ 07 апреля 2015

Если вы устанавливаете более старую версию Nokogiri, то есть до 1.6, это может помочь:

В Руководстве по установке Nokogiri они упоминают:

Поскольку Nokogiri нужно компилировать и динамически связывать как с libxml2, так и с libxslt, он приобрел репутацию сложного в установке.

Начиная с Nokogiri 1.6, исходный код libxml2 и libxslt поставляется вместе с Nokogiri, искомпилировано в gem-install-time.Этот документ должен работать для всех версий 1.6.4 и новее.

(Если вам нужна поддержка для установки более ранних версий Nokogiri, вы можете взглянуть на историю git для этого документа.)

Действительно, это сложно установить, но есть способ.Я начал копаться в истории readme и решил сделать это с хорошо написанным сообщением коммита:

" Доморощенный, я тебя прям ненавижу. "

Из этого сообщения и других ответов, приведенных здесь, я обнаружил, что мне нужно быть очень точным в отношении библиотек libxml2 lib, dir и include при установке Nokogiri.Следующее работает для меня, но, пожалуйста, обновите, чтобы соответствовать вашей версии программного обеспечения 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 голосов
/ 03 апреля 2017

Для меня я просто сделал следующее

xcode-select --install
gem install nokogiri

Для более подробного поиска неисправностей, проверьте Установка Nokogiri

0 голосов
/ 01 мая 2014

столкнулся с подобной проблемой установки на Mountain Lion, за исключением того, что команда make искала gcc-4.2 в / usr / local / opt / apple-gcc42 / bin

, это решило проблему для меня;не нужно заваривать пакет 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
...