ruby macos openssl homebrew eventmachine

ruby - gema eventmachine error fatal: no se encuentra el archivo ''openssl/ssl.h''



macos homebrew (9)

Acabo de instalar El Capitan y no puedo instalar gem eventmachine 1.0.7 . openssl está en 1.0.2a-1 . Intenté usar --with-ssl-dir pero parece ignorado.

También lo informó a su repositorio de Github .

Cualquier sugerencia es realmente apreciada. Gracias.

$ ls /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h /usr/local/Cellar/openssl/1.0.2a-1/include/openssl/ssl.h $ gem install eventmachine -v ''1.0.7'' -- --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include /Users/pain/.rbenv/versions/2.1.2/bin/ruby -r ./siteconf20150612-56154-1hsjz2n.rb extconf.rb --with-ssl-dir=/usr/local/Cellar/openssl/1.0.2a-1/include checking for rb_trap_immediate in ruby.h,rubysig.h... no checking for rb_thread_blocking_region()... yes checking for ruby/thread.h... yes checking for rb_thread_call_without_gvl() in ruby/thread.h... 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... yes checking for rb_thread_fd_select()... yes checking for rb_fdset_t in ruby/intern.h... yes checking for rb_wait_for_single_fd()... yes checking for rb_enable_interrupt()... no checking for rb_time_new()... yes checking for sys/event.h... yes checking for sys/queue... yes checking for clock_gettime()... no checking for gethrtime()... no creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling binder.cpp In file included from binder.cpp:20: ./project.h:116:10: fatal error: ''openssl/ssl.h'' file not found #include <openssl/ssl.h> ^ 1 error generated. make: *** [binder.o] Error 1 make failed, exit code 2


Al usar bundler y homebrew:

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include $ bundle install



Esto funcionó para mí

gem install eventmachine -v ''1.0.7'' -- --debug --backtrace --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib Building native extensions with: ''--debug --backtrace --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'' This could take a while... Successfully installed eventmachine-1.0.7 Parsing documentation for eventmachine-1.0.7 Installing ri documentation for eventmachine-1.0.7 Done installing documentation for eventmachine after 9 seconds 1 gem installed

NOTA: - Antes de poder instalar con éxito esta gema, tuve que hacer algunas cosas. Esto podría aplicarse a usted, así que enumere aquí:

1.) se bajó de la VPN corporativa O puede que tenga que activar la configuración del proxy

2.) PKG_CONFIG_PATH se estableció en -

echo $PKG_CONFIG_PATH /usr/local/opt/openssl/lib/pkgconfig

3.) tuvo que agregar lo siguiente a $ PATH en bash_profile (en mi caso ~ / .zshrc)

export PATH="/usr/local/opt/openssl/bin:$PATH"

4.) También tenga en cuenta que, a diferencia de algunas respuestas que obtuve en esta publicación SO, y también este hilo en github-eventmachine , no pude instalar eventmachine

gem install eventmachine -v ''1.0.7'' -- --debug --backtrace --with-cppflags=-I/usr/local/include --with-ldflags=-L/usr/local/lib Fetching: eventmachine-1.0.7.gem (100%) Building native extensions with: ''--debug --backtrace --with-cppflags=-I/usr/local/include --with-ldflags=-L/usr/local/lib'' This could take a while... ERROR: Error installing eventmachine: ERROR: Failed to build gem native extension.

Parece que /usr/local/opt/openssl/include es la ubicación correcta y no /usr/local/include cuando se especifica la ubicación de openssl.



Si está instalando EventMachine como una dependencia de otra gema, asegúrese de especificar la versión correcta cuando instale manualmente la gema:

gem install eventmachine -v 1.0.5 -- --with-cppflags=-I$(brew --prefix openssl)/include

Luego puede instalar la gema que originalmente estaba tratando de instalar:

gem install mailcatcher


Una alternativa es agregar una entrada de configuración de paquete para todo su perfil de usuario, como esta:

cd ~ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include

creará un archivo .bundle / config en su directorio de inicio, que luego se usará en todos sus proyectos cuando ejecute la bundle install .


$ gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include Building native extensions with: ''--with-cppflags=-I/usr/local/opt/openssl/include'' This could take a while... Successfully installed eventmachine-1.0.8 1 gem installed

También puedes configurar un paquete como este, pero creo que es superficial

bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include


brew link --force openssl

Entonces:

gem install eventmachine

También corrige:

  • gema instalar taks
  • paquete de instalación
  • rastrillo y tareas de rieles

PD: Probablemente necesites eliminar y ejecutar brew install openssl nuevamente

El problema ocurre porque Apple había eliminado openssl de OSX (en la construcción de El Captain)


gem pristine eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include

Prístino elimina la gema vieja y la vuelve a compilar.

La opción de banderas cpp permite al compilador encontrar los encabezados openssl.

También puede agregar la versión si lo desea:

gem pristine eventmachine -v ''1.0.4'' -- --with-cppflags=-I/usr/local/opt/openssl/include