gem eventmachine błąd krytyczny: nie znaleziono pliku „openssl / ssl.h”

265

Właśnie zainstalowałem El Capitan i nie mogę zainstalować klejnotu eventmachine 1.0.7. openssljest na 1.0.2a-1. Próbowałem użyć, --with-ssl-dirale wydaje się ignorowane.

Zgłoszono to również na ich repozytorium github .

Wszelkie sugestie są bardzo mile widziane. Dzięki.

$ 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
źródło

Odpowiedzi:

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

Możesz również skonfigurować taki pakiet, ale myślę, że to powierzchowne

bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
firedev
źródło
2
Dla mnie musiałem najpierw zainstalować openssl, zanim zadziałało. np brew install openssl.
Ryan Walls,
1
Jeśli masz ustawione klejnoty w określonym katalogu w repozytorium, tzn. vendor/bundleBędziesz chciał uruchomić bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Musiałem uruchomić to samo z klejnotem, pumawięc wyobrażam sobie, że dzieje się tak również w przypadku innych klejnotów.
Colton Fent
4
zobacz odpowiedź z: 'bundle config build.eventmachine --with-cppflags = -I $ (brew --prefix openssl) / include' od lloeki. To działało dla mnie. Nie ten.
justingordon
2
To działało dla mnie gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includena OSX El Capitan 10.11.5
Singh
dla mnie po instalacji brew install opensslmuszę zrobićbrew link openssl --force
s. Oshiro
231

Podczas korzystania z oprogramowania pakującego i homebrew:

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
Lloeki
źródło
1
Dla mnie musiałem najpierw zainstalować openssl, zanim zadziałało. np. brew install openssl
Ryan Walls
Ta wersja działała dla mnie, aby zainstalować eventmachine 1.0.3 na Ruby 2.1.2
dtburgess,
Fantastyczny! Jest to również sposób na
znalezienie
Myślę, że ta odpowiedź jest lepsza niż zatwierdzona, ponieważ ponieważ służy bundle installdo przeprowadzenia rzeczywistej instalacji klejnotów, gwarantuje, że zainstalujesz dokładną wersję określoną w pakiecie. Odpowiedź Zaakceptowany zainstaluje najnowszą wersję, chyba że należą -v x.x.xdo gem installkomendy ręcznie.
Ernesto,
115
brew link --force openssl

Następnie:

gem install eventmachine

Naprawia również:

  • klejnot zainstalować taks
  • instalacja pakietu
  • zadania prowizji i szyn

PS Prawdopodobnie będziesz musiał usunąć i uruchomić brew install opensslponownie

Problem występuje, ponieważ Apple usunęło openssl z OSX (w kompilacji El Captain)

itsnikolay
źródło
10
To rzeczywiście była poprawka na El Capitan.
jhedstrom
Dla wyjaśnienia, jaka jest kolejność parzenia usuń / zainstaluj / połącz
Abram
7
@Abram W przypadku brew link --force opensslnie miało wpływu. Następnie zrobić brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay
Oto odpowiedź na Maca dzisiaj (El Capitan, 2015-2016). EDYCJA: Po prostu zmuszając napar otwiera się. Nie musiałem określać wersji EventMachine (instalowałem Middleman).
Ryan Bosinger,
1
Pracował również dla mnie. Dobra decyzja.
Kees Briggs,
13
gem pristine eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include

nieskazitelny usuwa stary klejnot i ponownie go kompiluje.

Opcja flagi cpp pozwala kompilatorowi znaleźć nagłówki openssl.

Możesz także dodać wersję, jeśli chcesz:

gem pristine eventmachine -v '1.0.4' -- --with-cppflags=-I/usr/local/opt/openssl/include
jLuc
źródło
1
dlaczego pristinezamiast install?
Ricardo Freitas,
4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includepracował dla mnie.
Dylanthepiguy
8

Jeśli instalujesz EventMachine jako zależność innego klejnotu, pamiętaj, aby podać poprawną wersję podczas ręcznego instalowania klejnotu:

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

Następnie możesz zainstalować klejnot, który pierwotnie próbowałeś zainstalować:

gem install mailcatcher
Andrzej
źródło
8

Próbowałem zainstalować wersję 1.0.3 i to zadziałało dla mnie.

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

Te dyskusje były bardzo pomocne. https://github.com/eventmachine/eventmachine/issues/602

Ana Isabel
źródło
2
Wcześniej potrzebujesz łącznika I/usr/local/opt/openssl/include. To jedna postać, więc stackoverflow nie pozwala mi jej edytować
MaicolBen,
1
Naprawiono to @MaicolBen
blockloop
4

Jedną z możliwości jest dodanie pozycji konfiguracji pakietu dla całego profilu użytkownika, na przykład:

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

utworzy plik .bundle / config w twoim katalogu domowym, który jest następnie używany we wszystkich twoich projektach po uruchomieniu bundle install.

Fredrik Bränström
źródło
4

To rozwiązało problem:

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

Źródło: https://github.com/sj26/mailcatcher/issues/254

Giovanni Benussi
źródło
Niepotrzebnie skomplikowane, dlaczego nie po prostu ustawić var: export PKG_CONFIG_PATH = $ (brew --prefix openssl) / lib / pkgconfig # teraz możesz zainstalować dowolne pakiety, dodać do .bashrc lub tego, czego używasz
Gerry Gleason
0

To zadziałało dla mnie -

    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

UWAGA: - Zanim udało mi się zainstalować ten klejnot, musiałem zrobić kilka rzeczy. Mogą Cię dotyczyć, dlatego umieszczając je tutaj -

1.) wysiadłem z korporacyjnej sieci VPN LUB może być konieczne włączenie ustawień proxy

2.) PKG_CONFIG_PATH ustawiono na -

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

3.) musiał dodać następujące polecenie do $ PATH w bash_profile (w moim przypadku ~ / .zshrc)

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

4.) Zwróć też uwagę, że w przeciwieństwie do niektórych odpowiedzi, które otrzymałem w tym poście SO, a także w tym wątku na github-eventmachine , nie byłem w stanie zainstalować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.

Wydaje się, że /usr/local/opt/openssl/includejest to właściwa lokalizacja, a nie /usr/local/includeprzy określaniu lokalizacji openssl.

ARKA
źródło