Проблемы Nokogiri с LibXML на Mountain Lion

Недавно я сделал чистую установку Mountain Lion и после установки Nokogiri получил ошибку при запуске консоли Rails: WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

Поэтому я просмотрел другие вопросы здесь, на SO, удалил все и попытался снова, но заметил, что инструкции по установке устарели на веб-сайте Nokogiri: http://nokogiri.org/tutorials/installing_nokogiri.html

Поскольку 'brew install libxml2 libxslt' на самом деле устанавливает libxml2 2.8.0, и, читая дальнейшие инструкции, он ссылается на 2.7.8:

gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 
                    --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib 
                    --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 
                    --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include 
                    --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

(обратите внимание на libxml2/2.7.8)

Поэтому я снова удаляю и переустанавливаю с помощью: (libxml2/2.8.0)

sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib

И хотя кажется, что в IRB это работает нормально, в Rails C этого не происходит — все равно пишет:

WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8

Я пробовал запустить пакетное обновление, но все по-прежнему.

Любые идеи, как я могу это исправить, пожалуйста?


person A4J    schedule 03.08.2012    source источник
comment
У меня такая же проблема. Вывод nokogiri -v говорит: compiled: 2.8.0, loaded: 2.8.0. Кажется странной проблемой только с Rails.   -  person Chris Lloyd    schedule 16.08.2012
comment
Попробуйте brew удалить libxml2 и повторить попытку (если это не сработает, удалите nokogiri и переустановите его). Кроме того, добавьте гем PG в начало вашего гемфайла.   -  person A4J    schedule 19.08.2012


Ответы (3)


так что вы впервые запустили gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib ..., и он все еще говорит: «Nokogiri был создан для LibXML версии 2.8.0»? это выглядит почти так, как будто он не обращал внимания на переключатели.

в любом случае, проблема точно такая же, как и на вашем компьютере: libxml*.so, которую он использует во время выполнения, является старой версией. попробуйте man ldconfig, поищите в стандартных каталогах старую библиотеку libxml. может быть достаточно поставить новый рядом с ним и указать на него символическую ссылку.

отказ от ответственности: я не osxer, покупатель остерегается.

person just somebody    schedule 03.08.2012
comment
Привет, теперь я не уверен в исходной ошибке, так как не обратил на нее внимания (возможно, версии были перевернуты?). Я попробовал ваше предложение «man ldconfig», но он говорит: «Нет ручного ввода для ldconfig». Можете ли вы придумать что-нибудь еще, что я могу попробовать? Спасибо! - person A4J; 03.08.2012
comment
вы можете попробовать опубликовать фактическое сообщение об ошибке. кроме того, это было не так сложно найти: stackoverflow.com/questions/1451047/ldconfig-for -mac-os-x - person just somebody; 11.08.2012

Если у вас нет острой необходимости использовать более новую версию libxml2, стандартная версия, поставляемая с OS X Mountain Lion, вполне подойдет. я использовал

brew uninstall libxml2
brew uninstall libxslt

gem uninstall nokogiri
gem install nokogiri

к хорошему эффекту. В переустановке Ruby 1.9.3, рекомендованной здесь, нет необходимости. Конечно, libxslt нужно удалять только в том случае, если вы уже установили его ранее (как я).

Если вы удалите одну из библиотек, вы можете проверить через

brew missing

случайно ли вы удалили зависимость.

person C.Sage    schedule 09.01.2013

Проверьте свой gemfile и убедитесь, что nokogiri неявно определен — не полагайтесь на подразумеваемое включение, чтобы получить правильную версию драгоценного камня nokogiri.

Затем удалите libxml2 и libxslt, если они установлены через brew, удалите nokogiri через gem и переустановите его через установку комплекта.

person IAmNaN    schedule 19.06.2013