Обновлен до ruby ​​1.9.2 и получает ошибки ошибки сегментации в nokogiri - PullRequest
4 голосов
/ 12 ноября 2010

Вчера я решил обновиться до 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.60,4

Ответы [ 5 ]

5 голосов
/ 28 марта 2011

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

ERROR

$ 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

SOLUTION

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

, если это так, удалите его: например: 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

4 голосов
/ 12 ноября 2010

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

rvm 1.9.2

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

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

2 голосов
/ 12 ноября 2010

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

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

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

0 голосов
/ 17 июля 2013

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

rvm gemset empty

с последующей стандартной установкой пакета получил все дляя.

0 голосов
/ 19 октября 2012

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

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

...