ruby eventmachine

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).