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
Estaba intentando instalar la versión 1.0.3 y esto funcionó para mí.
gem install eventmachine -v ''1.0.3'' -- --with-cppflags=-I/usr/local/opt/openssl/include
Estas discusiones fueron muy útiles. https://github.com/eventmachine/eventmachine/issues/602
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.
Esto resolvió mi problema:
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"
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