Se actualizó a Ruby 1.9.2 y se detectaron errores de falla de segmentación en nokogiri.

Decidí actualizar a 1.9.2 ruby ​​ayer y también instalé rvm para hacerlo. Corrí algunos archivos recientes que tenía trabajando previamente en 1.8.7 pero cualquier cosa que requiera nokogiri falla con los siguientes errores.

/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] 

Estoy ejecutando nokogiri 1.4.3.1, ruby ​​1.9.2 en OSX Snow Leopard 10.6.4

Si recibe un error de falla de Segmentación de nokogiri, por ejemplo, cuando abre la consola de los Rails, está utilizando RVM y su versión de ruby ​​es 1.9.2 algo (la mía actualmente es 1.9.2p136) y nota una referencia a ruby ​​1.8. 7 justo después del mensaje de error de segmentación de nokogiri, entonces quizás lo siguiente pueda ser de ayuda …

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 

SOLUCIÓN

(1) asegúrese de que ruby ​​1.8.7 no sea una versión de rvm ruby: – ​​ejecute rvm list

Si es así, elimínelo: ej: rvm uninstall ree-1.8.7-2010.02

(2) desinstala dependencias relacionadas con nokogiri y libxml2:

 $ gem uninstall nokogiri $ brew uninstall libxml2 

(3) instala libxml2 usando homebrew

 $ brew install libxml2 $ brew link libxml2 

(4) instala libxslt desde la fuente

 $ 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) instalar nokogiri

 gem install nokogiri 

Alternativa (asegúrese de que sus rutas sean correctas): 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) prueba

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

Conseguir y mantener las bibliotecas de análisis XML de Ruby funcionando correctamente puede ser un problema. Aquí hay algunas alternativas: LibXML, Hpricot, REXML

Supongo que solo necesitas decirle a rvm que use el Ruby correcto.

 rvm 1.9.2 

De lo contrario, ¿por qué su segunda línea indica 1.8.7?

No debe esperar que el código nativo comstackdo contra una versión principal de ruby ​​se vincule limpiamente con otra. No hay contrato de ABI, afaik.

¿Es posible que originalmente hayas construido Nokogiri en Leopard y luego pasaste a Snow Leopard?

Si es así, haz una gem uninstall nokogiri seguido de la gem install nokogiri . Eso lo forzará a volver a comstackr para tu Ruby y SO actualmente seleccionados.

Vi problemas similares cuando actualicé de Leopard a Snow Leopard y reinstalé mi Ruby. Las gems no se volvieron a comstackr, así que tuve que obligar a varias de ellas a hacerlo.

Intente ejecutar los rvm requirements en la Terminal y ver si faltan dependencias. (Se muestra en rojo en mi OS X)

Las notas devueltas me ayudaron a instalar dependencias faltantes con brew, con pasos claramente establecidos.

Todas las sugerencias aquí no funcionaron para mí, pero la respuesta abreviada a este problema por mmrobins a continuación:

 rvm gemset empty 

seguido de una instalación de paquete estándar hizo que todo funcionara para mí.