web-dev-qa-db-fra.com

erreur fatale gem eventmachine: fichier 'openssl / ssl.h' introuvable

Je viens d'installer El Capitan et je ne peux pas installer le gem eventmachine1.0.7. openssl est à 1.0.2a-1. Essayé d'utiliser --with-ssl-dir mais il semble ignoré.

Signalé à leur github repo ainsi.

Toutes les suggestions sont vraiment appréciées. Merci.

$ 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
265
firedev
$ 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

Vous pouvez aussi configurer un bundle comme celui-ci mais je pense que c'est superficiel

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

Lorsque vous utilisez bundler et homebrew:

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

Ensuite:

gem install eventmachine

Il corrige également:

  • bijou installer taks
  • installation groupée
  • rake et Rails tâches

P.S. Vous devrez probablement supprimer et exécuter à nouveau brew install openssl

Le problème se produit parce que Apple avait supprimé openssl d'OSX (dans El Captain Build).

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

vierge supprime l'ancienne gemme et la recompile.

L'option drapeaux cpp permet au compilateur de trouver les en-têtes openssl.

Vous pouvez également ajouter la version si vous aimez:

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

J'essayais d'installer la version 1.0.3 et cela a fonctionné pour moi.

gem install eventmachine -v '1.0.3' -- --with-cppflags=-I/usr/local/opt/openssl/include

Ces discussions ont été très utiles. https://github.com/eventmachine/eventmachine/issues/602

8
Ana Isabel

Si vous installez EventMachine en tant que dépendance d'un autre gem, veillez à spécifier la version correcte lorsque vous installez manuellement le gem:

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

Ensuite, vous pouvez installer la gemme que vous vouliez installer à l'origine:

gem install mailcatcher
7
Andrew

Cela a résolu le problème pour moi:

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

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

4
Giovanni Benussi

Une alternative consiste à ajouter une entrée de configuration bundler pour l'ensemble de votre profil d'utilisateur, comme ceci:

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

cela créera un fichier .bundle/config dans votre répertoire personnel, qui sera ensuite utilisé dans tous vos projets lorsque vous exécuterez bundle install.

4
Fredrik Bränström

Cela a fonctionné pour moi -

    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

REMARQUE: - Avant de pouvoir installer cette gemme avec succès, je devais faire quelques petites choses. Celles-ci peuvent s’appliquer à vous, citez-les ici -

1.) obtenu du VPN de l'entreprise OR vous devrez peut-être activer les paramètres de proxy

2.) PKG_CONFIG_PATH a été défini sur -

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

3.) a dû ajouter ce qui suit à $ PATH dans bash_profile (dans mon cas ~/.zshrc)

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

4.) Notez également que contrairement à certaines réponses que j'ai obtenues dans ce SO post, et aussi ce fil sur github-eventmachine , je n'ai pas pu installer 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.

Il semble que /usr/local/opt/openssl/include soit le bon emplacement et non pas /usr/local/include lors de la spécification de l’emplacement openssl.

0
Akshayraj Kore