gem eventmachine fatal error: file 'openssl / ssl.h' non trovato


265

Ho appena installato El Capitan e non posso installare gem eventmachine 1.0.7. opensslè a 1.0.2a-1. Ho provato a usare --with-ssl-dirma sembra ignorato.

Segnalato anche al loro repository github .

Tutti i suggerimenti sono molto apprezzati. Grazie.

$ 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

Risposte:


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

Puoi anche impostare bundler in questo modo, ma penso che sia superficiale

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

2
Per me, ho dovuto installare openssl prima che funzionasse. es brew install openssl.
Ryan Walls,

1
Se hai le tue gemme impostate su una directory specifica nel tuo repository, cioè vendor/bundleallora vorrai eseguire il bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Ho dovuto eseguire la stessa cosa con la gemma, pumaquindi immagino che ciò accada anche per altre gemme.
Colton Fent,

4
vedere la risposta con: 'bundle config build.eventmachine --with-cppflags = -I $ (brew --prefix openssl) / include' da lloeki. Questo ha funzionato per me. Non questo.
justingordon,

2
Questo ha funzionato per me gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includesu OSX El Capitan 10.11.5
Jagdeep Singh,

per me dopo l'installazione brew install openssldevo farebrew link openssl --force
Sr. Oshiro,

231

Quando si utilizzano bundler e homebrew:

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

1
Per me, ho dovuto installare openssl prima che funzionasse. ad es. brew install openssl
Ryan Walls,

Questa versione ha funzionato per me per installare eventmachine 1.0.3 su ruby ​​2.1.2
dtburgess

Fantastico! Questa è anche la strada da percorrere per altre gemme (ad es. Puma) che dipendono da openssl
morgler,

Penso che questa risposta sia migliore di quella approvata, perché dal momento che utilizza bundle installper eseguire l'effettiva installazione gemma, garantisce che installerai la versione esatta specificata nel tuo bundle. La risposta accettata installerà l'ultima versione, a meno che non si includa manualmente -v x.x.xil gem installcomando.
Ernesto,

115
brew link --force openssl

Poi:

gem install eventmachine

Risolve anche:

  • gem install taks
  • installazione in bundle
  • attività di rastrello e rotaie

PS Probabilmente dovrai rimuoverlo ed eseguirlo di brew install opensslnuovo

Il problema si risolve perché Apple ha rimosso openssl da OSX (nella build di El Captain)


10
Questa era davvero la correzione di El Capitan.
jhedstrom,

Per chiarimenti, qual è l'ordine della birra remove / install / link
Abram

7
@Abram In caso di brew link --force opensslnon avere alcun effetto. Poi fate brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay

Questa è la risposta su un Mac oggi (El Capitan, 2015-2016). EDIT: solo forzando la birra si apre. Non avevo bisogno di specificare una versione di EventMachine (stavo installando Middleman).
Ryan Bosinger,

1
Ha funzionato anche per me. Ottima scelta.
Kees Briggs,

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

incontaminata rimuove la vecchia gemma e la ricompila.

L'opzione cpp flags consente al compilatore di trovare le intestazioni di openssl.

Puoi anche aggiungere la versione se ti piace:

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

1
perché pristineinvece di install?
Ricardo Freitas,

4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includeha funzionato per me.
Dylanthepiguy,

8

Se stai installando EventMachine come dipendenza di un'altra gemma, assicurati di specificare la versione corretta quando installi manualmente la gemma:

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

Quindi puoi installare la gemma che stavi originariamente cercando di installare:

gem install mailcatcher

8

Stavo cercando di installare la versione 1.0.3 e questo ha funzionato per me.

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

Queste discussioni sono state molto utili. https://github.com/eventmachine/eventmachine/issues/602


2
Hai bisogno di un hypen prima I/usr/local/opt/openssl/include. È un personaggio, quindi StackOverflow non mi permette di modificarlo
MaicolBen

1
Risolto il problema con @MaicolBen
blockloop

4

Un'alternativa è aggiungere una voce di configurazione del bundler per l'intero profilo utente, in questo modo:

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

creerà un file .bundle / config nella directory home, che verrà quindi utilizzato in tutti i progetti durante l'esecuzione bundle install.


4

Questo ha risolto il problema per me:

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

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


Inutilmente complicato, perché non impostare semplicemente var: export PKG_CONFIG_PATH = $ (brew --prefix openssl) / lib / pkgconfig # ora puoi installare qualsiasi pacchetto, aggiungere a .bashrc o quello che usi
Gerry Gleason,

0

Questo ha funzionato per me -

    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: - Prima di poter installare con successo questo gioiello, ho dovuto fare alcune cose. Questi potrebbero applicarsi a te, quindi elencandoli qui -

1.) scendere dalla VPN aziendale O potrebbe essere necessario attivare le impostazioni proxy

2.) PKG_CONFIG_PATH era impostato su -

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

3.) ho dovuto aggiungere quanto segue a $ PATH in bash_profile (nel mio caso ~ / .zshrc)

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

4.) Nota anche che, contrariamente ad alcune risposte che ho ricevuto in questo post SO, e anche in questa discussione su github-eventmachine , non sono stato in grado di installareeventmachine

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.

Sembra /usr/local/opt/openssl/includela posizione giusta e non /usr/local/includequando si specifica la posizione openssl.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.