Обновлен до ruby ​​1.9.2 и получает ошибки Segmentation Fault в nokogiri

Я решил обновить до 1.9.2 ruby ​​вчера, а также установил rvm для этого. Я запустил несколько последних файлов, над которыми работал ранее на 1.8.7, но все, что требует nokogiri, не работает со следующими ошибками.

/Users/myusername/.rvm/gems/ruby-1.9.2-p0/gems/nokogiri-1.4.3.1/lib/nokogiri/nokogiri.bundle: [BUG] Segmentation fault
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

Я запускаю nokogiri 1.4.3.1, ruby ​​1.9.2 на OSX Snow Leopard 10.6.4

5 ответов

Если вы получили ошибку сбоя сегментации от nokogiri, например, когда вы открываете консоль rails, и вы используете RVM, и ваша версия ruby ​​имеет версию 1.9.2 (моя в настоящее время 1.9.2p136), и вы заметили ссылку на ruby ​​1.8.7 сразу после сообщения об ошибке сегментации nokogiri, возможно, следующее может быть полезным...

ОШИБКА

$ rails c
/Users/lex/.rvm/gems/ruby-1.9.2-p136@lmi/gems/nokogiri-1.4.4/lib/nokogiri/nokogiri.bundle: [BUG] Segmentation fault
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

Abort trap

РЕШЕНИЕ

(1) убедитесь, что ruby ​​1.8.7 не является версией ruv ruby: - ​​запустите rvm list

если это так, то удалите его: ex: rvm uninstall ree-1.8.7-2010.02

(2) удалите зависимости, связанные с nokogiri и libxml2:

$ gem uninstall nokogiri
$ brew uninstall libxml2

(3) установить libxml2, используя homebrew

$ brew install libxml2
$ brew link libxml2

(4) установить libxslt из исходного кода

$ wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
$ tar -zxvf libxslt-1.1.26.tar.gz
$ cd libxslt-1.1.26
$ ./configure --prefix=/usr/local/Cellar/libxslt/1.1.26    --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.7
$ make
$ sudo make install

(5) установить nokogiri

gem install nokogiri

Альтернатива (убедитесь, что ваши пути верны): gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.7/include --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.7/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

(6) тест

$ rails c
Loading development environment (Rails 3.0.3)
>>

Получение и поддержание правильной работы библиотек синтаксического анализа Ruby XML может стать проблемой. Вот несколько альтернатив: LibXML, Hpricot, REXML

Я предполагаю, что вам просто нужно сказать rvm использовать правильный рубин.

rvm 1.9.2

В противном случае, почему ваша вторая строка указывает на 1.8.7?

Вы не должны ожидать, что нативный код, скомпилированный для одной основной версии ruby, будет чисто ссылаться на другую. Там нет контракта ABI, афаик.

Возможно ли, что вы изначально построили Nokogiri на Leopard, а затем повысили его до Snow Leopard?

Если так, сделайте gem uninstall nokogiri с последующим gem install nokogiri, Это заставит его перекомпилироваться для выбранных вами Ruby и ОС.

Я видел подобные проблемы, когда я обновил Leopard до Snow Leopard и переустановил свой Ruby. Драгоценные камни не перекомпилировались, поэтому мне пришлось заставить некоторых из них сделать это.

Все предложения здесь не работали для меня, но сокращенный ответ на этот вопрос mmrobins ниже:

rvm gemset empty

После установки стандартного комплекта все получилось у меня.

Попробуйте запустить rvm requirements в терминале и посмотреть, есть ли какие-либо отсутствующие зависимости. (Это показывает красным цветом в моей OS X)

Возвращенные заметки помогли мне установить недостающие зависимости с помощью brew, с четко указанными шагами.

Другие вопросы по тегам