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

265

Acabo de instalar El Capitan y no puedo instalar gem eventmachine 1.0.7. openssles al 1.0.2a-1. Intenté usarlo --with-ssl-dirpero 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
firedev
fuente

Respuestas:

513
$ 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 puede configurar un paquete como este, pero creo que es superficial

bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
firedev
fuente
2
Para mí, tuve que instalar openssl primero antes de que esto funcionara. por ej brew install openssl.
Ryan Walls
1
Si tiene sus gemas configuradas en un directorio específico en su repositorio, es decir vendor/bundle, querrá ejecutar el bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Tuve que ejecutar lo mismo con la gema, pumaasí que imagino que esto también está sucediendo con otras gemas.
Colton Fent
44
vea la respuesta con: 'bundle config build.eventmachine --with-cppflags = -I $ (brew --prefix openssl) / include' de lloeki. Eso funcionó para mí. Este no.
Justingordon
2
Esto funcionó para mí gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includeen OSX El Capitan 10.11.5
Jagdeep Singh
para mí después de la instalación brew install opensslque tengo que hacerbrew link openssl --force
Sr. Oshiro
231

Al usar bundler y homebrew:

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
Lloeki
fuente
1
Para mí, tuve que instalar openssl primero antes de que esto funcionara. eg brew install openssl
Ryan Walls
Esta versión me funcionó para instalar eventmachine 1.0.3 encima de ruby ​​2.1.2
dtburgess
¡Fantástico! Este es también el camino a seguir para otras gemas (por ejemplo, puma) que dependen de openssl
morgler
Creo que esta respuesta es mejor que la aprobada, porque como se usa bundle installpara realizar la instalación real de gemas, garantiza que instalará la versión exacta especificada en su paquete. La respuesta aceptada instalará la última versión, a menos que incluya manualmente -v x.x.xen el gem installcomando.
Ernesto
115
brew link --force openssl

Luego:

gem install eventmachine

También corrige:

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

PD: Probablemente necesites eliminar y brew install opensslvolver a ejecutar

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

itsnikolay
fuente
10
Esta fue de hecho la solución en El Capitán.
jhedstrom
Para aclarar, cuál es el orden de eliminación / instalación / enlace de preparación
Abram
77
@Abram En caso de brew link --force opensslno tener efecto. A continuación, hacer brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay
Esta es la respuesta en una Mac hoy (El Capitan, 2015-2016). EDITAR: solo forzando la cerveza openssl. No necesitaba especificar una versión de EventMachine (estaba instalando Middleman).
Ryan Bosinger
1
Me funcionó a mi también. Buena llamada.
Kees Briggs el
13
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 de cpp permite al compilador encontrar los encabezados de 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
jLuc
fuente
1
¿Por qué en pristinelugar de install?
Ricardo Freitas
44
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includetrabajó para mi.
Dylanthepiguy
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
Andrés
fuente
8

Estaba tratando de 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

Ana isabel
fuente
2
Necesitas un himno antes I/usr/local/opt/openssl/include. Es un personaje, por lo que stackoverflow no me permite editarlo
MaicolBen
1
Lo arregló @MaicolBen
blockloop
4

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 lo ejecute bundle install.

Fredrik Bränström
fuente
4

Esto resolvió mi problema:

PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"

Fuente: https://github.com/sj26/mailcatcher/issues/254

Giovanni Benussi
fuente
Innecesariamente complicado, ¿por qué no simplemente configurar var: export PKG_CONFIG_PATH = $ (brew --prefix openssl) / lib / pkgconfig # ahora puede instalar cualquier paquete, agregarlo a .bashrc, o lo que use
Gerry Gleason
0

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 instalareventmachine

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/includees la ubicación correcta y no /usr/local/includecuando se especifica la ubicación de openssl.

ARCA
fuente