schwerwiegender Fehler bei gem eventmachine: Datei 'openssl / ssl.h' nicht gefunden

265

Ich habe gerade El Capitan installiert und kann gem nicht installieren eventmachine 1.0.7. opensslist bei 1.0.2a-1. Versucht zu verwenden, --with-ssl-diraber es scheint ignoriert.

Hat es auch ihrem Github-Repo gemeldet .

Anregungen sind sehr willkommen. Vielen Dank.

$ 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
quelle

Antworten:

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

Sie können den Bundler auch so einrichten, aber ich denke, das ist oberflächlich

bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include
Firedev
quelle
2
Für mich musste ich zuerst openssl installieren, bevor dies funktionierte. zB brew install openssl.
Ryan Walls
1
Wenn Sie Ihre Edelsteine ​​in Ihrem Repo auf ein bestimmtes Verzeichnis eingestellt haben, vendor/bundlemöchten Sie das ausführen bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Ich musste dasselbe mit dem Edelstein ausführen, pumaalso stelle ich mir vor, dass dies auch für andere Edelsteine ​​geschieht.
Colton Fent
4
Siehe Antwort mit: 'bundle config build.eventmachine --with-cppflags = -I $ (brauen --prefix openssl) / include' von lloeki. Das hat bei mir funktioniert. Nicht dieser.
Justingordon
2
Dies funktionierte für mich gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includeunter OSX El Capitan 10.11.5
Jagdeep Singh
für mich nach der Installation muss brew install opensslich tunbrew link openssl --force
Sr. Oshiro
231

Bei Verwendung von Bundler und Homebrew:

$ bundle config build.eventmachine --with-cppflags=-I$(brew --prefix openssl)/include
$ bundle install
Lloeki
quelle
1
Für mich musste ich zuerst openssl installieren, bevor dies funktionierte. zB brew install openssl
Ryan Walls
Diese Version funktionierte für mich, um eventmachine 1.0.3 auf Ruby 2.1.2 zu installieren
dtburgess
Fantastisch! Dies ist auch der Weg für andere Edelsteine ​​(zB Puma), die von
openssl
Ich denke, diese Antwort ist besser als die genehmigte, da sie bundle installzur Durchführung der eigentlichen Edelsteininstallation garantiert, dass Sie die genaue Version installieren, die in Ihrem Bundle angegeben ist. Die akzeptierte Antwort installiert die neueste Version, es sei denn, Sie fügen die manuell -v x.x.xin den gem installBefehl ein.
Ernesto
115
brew link --force openssl

Dann:

gem install eventmachine

Es behebt auch:

  • gem install taks
  • Bundle installieren
  • Rechen- und Schienenaufgaben

PS Wahrscheinlich müssen Sie entfernen und brew install opensslerneut ausführen

Das Problem tritt auf, weil Apple openssl aus OSX entfernt hat (in El Captain Build).

itsnikolay
quelle
10
Dies war in der Tat die Lösung für El Capitan.
Jhedstrom
Zur Verdeutlichung, wie ist die Reihenfolge des Aufbrühens entfernen / installieren / verknüpfen
Abram
7
@Abram Im Falle von brew link --force opensslhatte keine Wirkung. Dann tun brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay
Dies ist heute die Antwort auf einem Mac (El Capitan, 2015-2016). EDIT: Nur das Gebräu erzwingen opensl. Ich musste keine Version von EventMachine angeben (ich habe Middleman installiert).
Ryan Bosinger
1
Hat auch für mich gearbeitet. Guter Anruf.
Kees Briggs
13
gem pristine eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include

makellos entfernt den alten Edelstein und kompiliert ihn neu.

Mit der Option cpp flags kann der Compiler die openssl-Header finden.

Sie können die Version auch hinzufügen, wenn Sie möchten:

gem pristine eventmachine -v '1.0.4' -- --with-cppflags=-I/usr/local/opt/openssl/include
jLuc
quelle
1
warum pristinestatt install?
Ricardo Freitas
4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includearbeitete für mich.
Dylanthepiguy
8

Wenn Sie EventMachine als Abhängigkeit von einem anderen Gem installieren, müssen Sie bei der manuellen Installation des Gems die richtige Version angeben:

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

Dann können Sie das Juwel installieren, das Sie ursprünglich installieren wollten:

gem install mailcatcher
Andrew
quelle
8

Ich habe versucht, v 1.0.3 zu installieren, und das hat bei mir funktioniert.

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

Diese Diskussionen waren sehr hilfreich. https://github.com/eventmachine/eventmachine/issues/602

Ana Isabel
quelle
2
Du brauchst vorher einen Hypen I/usr/local/opt/openssl/include. Es ist ein Charakter, so dass Stackoverflow mich nicht bearbeiten lässt
MaicolBen
1
Behoben es @MaicolBen
Blockloop
4

Eine Alternative besteht darin, einen Bundler-Konfigurationseintrag für Ihr gesamtes Benutzerprofil wie folgt hinzuzufügen:

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

Es wird eine .bundle / config-Datei in Ihrem Home-Verzeichnis erstellt, die dann in allen Ihren Projekten verwendet wird, wenn Sie ausgeführt werden bundle install.

Fredrik Bränström
quelle
4

Dies löste das Problem für mich:

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

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

Giovanni Benussi
quelle
Unnötig kompliziert, warum nicht einfach die var: export PKG_CONFIG_PATH = $ (brauen --prefix openssl) / lib / pkgconfig # jetzt können Sie beliebige Pakete installieren, zu .bashrc hinzufügen oder was Sie verwenden
Gerry Gleason
0

Das hat bei mir funktioniert -

    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

HINWEIS: - Bevor ich dieses Juwel erfolgreich installieren konnte, musste ich einige Dinge tun. Diese können auf Sie zutreffen, also listen Sie sie hier auf -

1.) hat das Unternehmens-VPN verlassen ODER Sie müssen möglicherweise die Proxy-Einstellungen aktivieren

2.) PKG_CONFIG_PATH wurde auf - gesetzt

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

3.) musste folgendes zu $ ​​PATH in bash_profile hinzufügen (in meinem Fall ~ / .zshrc)

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

4.) Beachten Sie auch, dass ich entgegen einigen Antworten, die ich in diesem SO-Beitrag und auch in diesem Thread auf github-eventmachine erhalten habe , nicht installieren konnteeventmachine

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.

Es scheint /usr/local/opt/openssl/includeder richtige Ort zu sein und nicht, /usr/local/includewenn der openssl-Ort angegeben wird.

ARCHE
quelle