Segfaulting persistente de Ruby después de una instalación limpia
ruby-on-rails-3 openssl (3)
El problema parecía ser que Homebrew y MacPorts entraban en conflicto, así que borré MacPorts, eliminé todos los paquetes y el directorio /opt/local/
. Esto causó un problema con la gema PG debido a la instalación de PostgreSQL en Homebrew.
Así que eliminé la fórmula de Postgres, luego la reinstalé y lo mismo para la instalación de OpenSSL usando Homebrew.
Después de eso implosioné RVM y lo instalé y mis Rubies nuevamente (no estoy seguro de si este paso era necesario) y finalmente funciona.
Ruby mantiene segfaulting cuando usa la gema Koala para hablar a través de HTTP:
/Users/pawel/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault
He intentado lo siguiente:
- Ejecutar
which -a ruby
que mostró múltiples Rubies a través de MacPorts. Así que los eliminé y volví a ejecutar el mismo comando solo devuelve/usr/bin/ruby
- Eliminé la versión para MacPorts de PostgreSQL y la instalé con Homebrew (con MacPorts, instala su propia versión de OpenSSL)
- La ejecución de la
openssl version
devuelveOpenSSL 1.0.0g 18 Jan 2012
- Quité Ruby 1.9.3 de RVM y probé el método de Luciano a continuación, que no funcionó.
- También intenté reinstalar 1.9.3 desde RVM y especificando
--with-openssl-dir=/opt/local
desde elwhich openssl
devuelve/opt/local/bin/openssl
- He reinstalado RVM (ahora es la versión 1.10.2 en
/Users/pawel/.rvm/bin/rvm
) - Me he actualizado a Ruby 1.9.3-p125 y también he probado 1.9.2
- He seguido las instrucciones aquí: http://www.christopherirish.com/2011/09/02/ruby-1-9-2-segmentation-fault-and-openssl/ (que son mis pasos anteriores, en realidad). También he leído la publicación anterior de Christopher aquí .
En mi directorio de proyectos cuando ejecuto lo siguiente, obtengo el
0
esperado.ruby -rubygems -e" require ''eventmachine''; require ''openssl'' "; echo $?
- Intenté
sudo port -f deactivate openssl
pero luego, cuando trato de iniciar un servidor Rails, obtengo laLibrary not loaded: /opt/local/lib/libssl.1.0.0.dylib
Necesito algunas ideas más sobre qué más puedo probar o qué cosas me he perdido.
Me encontré con este problema, también, pero usé una solución diferente. Aquí está el rastro de la pila completa del error .
Aquí está el informe oficial de errores: http://bugs.ruby-lang.org/issues/6184 Las respuestas debajo del rastro de la pila fueron muy útiles.
Si está utilizando openssl predeterminado de OS X -> haga lo mismo con
brew install openssl
y compile con openssl instalado, luego intente de nuevo.Si está utilizando openssl que instaló el usuario -> compila con ssl predeterminado de OS X y vuelve a intentarlo.
Esto me sonó similar a un problema recientemente cuando la biblioteca readline instalada en MacPorts rompió una instalación de ruby . Al ejecutar la siguiente secuencia de comandos en la instalación de Ruby quebrada, se mostraba que estaba cargando MacPorts openssl lib
require ''net/https''
puts `lsof -p #{$$} | grep ssl | awk ''{print $9}''`
(La salida)
/Users/john/.rbenv/versions/1.9.3-p125/lib/ruby/1.9.1/x86_64-darwin11.2.0/openssl.bundle
/opt/local/lib/libssl.1.0.0.dylib
La solución fue mover temporalmente MacPorts fuera de /opt/local
durante la instalación de Ruby.
- Salga de todos los procesos que acceden a los archivos de MacPorts. Puede ver cuáles se están ejecutando con
sudo lsof | grep /opt/local
sudo lsof | grep /opt/local
. -
sudo mv /opt/local /opt/localbak
- Abra una nueva terminal, luego compile e instale Ruby
-
sudo mv /opt/localbak /opt/local
Después de eso, la instalación de ruby funcionó correctamente junto con MacPorts y no cargó el archivo libssl desde MacPorts.
También estoy obteniendo el mismo error de falla de segmentación, pero estoy tratando de listar archivos en AWS-S3.
Editar :
De esta manera funcionó para mí:
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:$HOME/.rvm/bin
rvm remove 1.9.3
rvm pkg install iconv
rvm pkg install openssl
rvm install ruby-1.9.3 --with-openssl-dir=~/.rvm/usr --with-iconv-dir=~/.rvm/usr
- como @Simpleton dijo, escribí un comentario en el lugar equivocado. Ahora lo estoy editando con una respuesta. ;-)