web-dev-qa-db-ja.com

gem eventmachine致命的エラー: 'openssl / ssl.h'ファイルが見つかりません

El Capitanをインストールしたばかりで、gem eventmachine1.0.7をインストールできない。 openssl1.0.2a-1にあります。 --with-ssl-dirを使用しようとしましたが、無視されているようです。

彼らの githubレポジトリ にも報告しました。

任意の提案は本当に感謝しています。ありがとう。

$ 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
265
firedev
$ 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

あなたはまた、このようなバンドラーを設定することができますが、私はそれが表面的だと思います

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

バンドラーと自作を使用する場合:

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

その後:

gem install eventmachine

また修正します。

  • 宝石インストールtaks
  • バンドルインストール
  • rakeとRailsのタスク

P.Sおそらくbrew install opensslを削除してもう一度実行する必要があるでしょう。

この問題は、AppleがOSXからopensslを削除したために発生します(El Captainビルド)。

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

pristineは古いgemを削除して再コンパイルします。

Cpp flagsオプションを使用すると、コンパイラはopensslヘッダを見つけることができます。

必要に応じてバージョンを追加することもできます。

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

私はv 1.0.3をインストールしようとしていましたが、これは私にとってうまくいきました。

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

これらの議論はとても役に立ちました。 https://github.com/eventmachine/eventmachine/issues/602

8
Ana Isabel

EventMachineを他のgemの依存関係としてインストールしている場合は、gemを手動でインストールするときに必ず正しいバージョンを指定してください。

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

それからあなたはもともとインストールしようとしていたgemをインストールすることができます。

gem install mailcatcher
7
Andrew

これで問題は解決しました。

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

出典: https://github.com/sj26/mailcatcher/issues/254

4

代替案の1つは、次のように、ユーザープロファイル全体にbundler configエントリを追加することです。

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

ホームディレクトリに.bundle/configファイルが作成されます。これはbundle installを実行したときにすべてのプロジェクトで使用されます。

4

これは私のために働いた -

    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

注: - このgemを正しくインストールする前に、いくつかのことをしなければなりませんでした。これらはあなたに当てはまるかもしれないので、それらをここにリストします -

1.)コーポレートVPNをオフにしましたORプロキシ設定をオンにする必要があるかもしれません

2.)PKG_CONFIG_PATHが - に設定された

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

3.)bash_profileの$ PATHに以下を追加しなければなりません(私の場合は〜/ .zshrc)

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

4.)また、このSO投稿で得たいくつかの回答に反して、またこのスレッド github-eventmachine 、私は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.

Opensslの場所を指定する場合、/usr/local/opt/openssl/includeが正しい場所で、/usr/local/includeではないようです。

0
Akshayraj Kore