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

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

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

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)


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

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


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.


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.