ruby - Fallo de instalación de la gema Eventmachine
(9)
No puedo instalar eventmachine
Ok, sé que esto se ha preguntado bastante, pero ninguna solución que encontré me ha ayudado hasta ahora. Así que publiqué aquí como último recurso.
Uso windows 8 x64
usando ruby 2.0.0p195 (x64)
(instalado a través de Ruby Installer para Windows con el Devkit apropiado)
Entonces el Error es
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension
C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for main() in -lssl... no
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... no
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... yes
checking for main() in -lkernel32... yes
checking for main() in -lrpcrt4... yes
checking for main() in -lgdi32... yes
creating Makefile
make
generating rubyeventmachine-x64-mingw32.def
compiling binder.cpp
In file included from c:/users/btdy/downloads/devkit/mingw/bin/../lib/gcc/x86_64
-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/process.h:12:0,
from c:/Ruby200-x64/include/ruby-2.0.0/ruby/win32.h:60,
from c:/Ruby200-x64/include/ruby-2.0.0/ruby/defines.h:153,
from c:/Ruby200-x64/include/ruby-2.0.0/ruby/ruby.h:70,
from c:/Ruby200-x64/include/ruby-2.0.0/ruby.h:33,
from em.h:24,
from project.h:150,
from binder.cpp:20:
c:/users/btdy/downloads/devkit/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.7.2/../
../../../x86_64-w64-mingw32/include/sys/types.h:68:16: error: conflicting declar
ation ''typedef _pid_t pid_t''
In file included from binder.cpp:20:0:
project.h:97:13: error: ''pid_t'' has a previous declaration as ''typedef int pid_t
''
In file included from project.h:151:0,
from binder.cpp:20:
ed.h: In member function ''void EventableDescriptor::SetSocketInvalid()'':
ed.h:43:40: warning: overflow in implicit constant conversion [-Woverflow]
make: *** [binder.o] Error 1
Cosas que he intentado poner gem "eventmachine", "~> 1.0.3"
o gem "eventmachine", "~> 1.0.0.beta.4.1"
en mi gemfile y eliminado / modificar eventmachine de gemfile.lock
haciendo una nueva testapp e instalando Eventmachine allí (falla)
Cosas que sospecho rastreé dependencias para eventmachine (se pueden encontrar en Rubygems) y veo que no puedo instalar bluecloth tampoco (muestra un error de registro aún mayor) y tampoco puedo instalar tidy-ext (bluecloth depencency) así que creo que podría tener algo de relevancia, tampoco se puede instalar delgada
Para cualquier información simplemente pregunte
¡¡Gracias a todos de antemano!!
Recibí un error como el siguiente
C: / Ruby200-x64 / lib / ruby / gems / 2.0.0 / gems / eventmachine-1.0.3> gema build eventmachine.gemspec Gemspec inválida en [eventmachine.gemspec]: Ningún archivo o directorio - git ls-files
ERROR: error al cargar gemspec. Aborto
Sin embargo, mantuve el proyecto abierto en el teclado y traté de instalar gema. En un momento dado, el panel de texto pedirá una confirmación para volver a cargar el proyecto.h a medida que el archivo nuevo sea extraído del comando de instalación de gem. Simplemente, vuelva a cargar y comente la línea // typedef int pid_t; .. Luego se realizó la compilación.
básicamente, lleva un tiempo iniciar la compilación después de obtener los archivos del proyecto gema. Simplemente use ese tiempo para comentar su línea ... Funcionó para mí ... podría no funcionar para todos.
¡Aclamaciones!
Podría instalarlo, siguiendo estos pasos:
1) intenté una instalación normal:
gem install eventmachine
buscó la versión 1.0.3 de la gema, pero falló en la marca, debido a una declaración de variable conflit
2) editado el archivo:
c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3/ext/project.h
y comentó la línea 97
//typedef int pid_t;
para una corrección más robusta, revise la solución aquí https://github.com/eventmachine/eventmachine/pull/450/files
3) luego, abrí el símbolo del sistema y fui a la carpeta de gemas
c:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.3
y correr:
gem build eventmachine.gemspec
Necesita instalar git con la ubicación git.exe en la RUTA para que esto funcione (como C: / Users / YourUsername / AppData / Local / GitHub / PORTAB ~ 1 / bin).
4) generó un archivo eventmachine.gem en la carpeta ... Así que he copiado un archivo a la carpeta ac: / tmp, y fui a esa carpeta y desde allí, escribí:
gem install eventmachine-1.0.3.gem --local
¡Y se instaló con éxito!
La respuesta anterior sobre cómo compilar no funcionó para mí, ya que recibiría el mensaje "No se puede cargar tal archivo". gem build eventmachine.gemspec
este problema ejecutando la gem build eventmachine.gemspec
desde un checkout git del repositorio eventmachine.
https://github.com/eventmachine/eventmachine/tree/v1.0.3
Debería poder ver que el tamaño del archivo .gem es mucho mayor ya que incluye el código correcto.
Tuve el mismo problema y tuve éxito al ejecutarlo agregando a continuación al comienzo del Gemfile
:
gem ''eventmachine'', :git => ''git://github.com/eventmachine/eventmachine.git'', :branch => ''master''
Antes de eso, desinstalé eventmachine
.
Hoy me enfrenté a problemas similares para la gema eventmachine (tanto para la versión 1.0.3 como para la 1.0.4) al actualizar a Ruby 2.2.0. Y lo solucioné instalando las últimas "herramientas de desarrollador" para MAC OSX 10.10.1 Yosemite y XCode 6.1.1
Aquí está mi publicación detallada del blog para resolver este problema con la instalación de la gema eventmachine - http://kiprosh.com/blog/208
Esto funcionó para mí:
brew link openssl --force
Tuve el mismo problema en Linux.
Lo resolví actualizando ruby a ruby-2.2.1
.
Tratar
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include
Puede probar esta respuesta aquí: Rails: no se puede ejecutar la aplicación: no se puede cargar la extensión EventMachine C;
La respuesta aceptada a esta pregunta funciona. Pero tendrá otros problemas, como se muestra en los comentarios a continuación.
Sigue la solución de suda en el enlace, estarás bien.
(En realidad, básicamente se trata de compilar e instalar gem del repositorio de código maestro github. Me sorprendió que todavía no hayan implementado el arreglo de problemas en el maestro, ya que lo saben).