Je viens d'installer El Capitan et je ne peux pas installer le gem eventmachine
1.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
$ 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
Lorsque vous utilisez bundler et homebrew:
$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
brew link --force openssl
Ensuite:
gem install eventmachine
Il corrige également:
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).
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
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
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
Cela a résolu le problème pour moi:
PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" gem install eventmachine -v "1.0.8"
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
.
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.