gem eventmachine fatal error: 'openssl / ssl.h' file not found


265

El Capitanをインストールしたばかりで、gemをインストールできませんeventmachine 1.0.7opensslにあり1.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

回答:


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

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

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

2
私にとっては、これが機能する前にまずopensslをインストールする必要がありました。例えばbrew install openssl
Ryan Walls

1
gemをリポジトリの特定のディレクトリに設定している場合、つまりvendor/bundle、を実行する必要がありますbundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include。私は宝石で同じことを実行しなければならなかったpumaので、これは他の宝石でも同様に起こっていると思います。
Colton Fent、2015年

4
lloekiの「bundle config build.eventmachine --with-cppflags = -I $(brew --prefix openssl)/ include」の回答を参照してください。それでうまくいきました。これじゃない。
justingordon 2015年

2
これはgem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includeOSX El Capitan 10.11.5
Jagdeep Singhで

インストール後、brew install openssl私がしなければならないことbrew link openssl --force
Sr. Oshiro

231

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

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

1
私にとっては、これが機能する前にまずopensslをインストールする必要がありました。例 brew install openssl
Ryan Walls

このバージョンは、ruby 2.1.2の上にeventmachine 1.0.3をインストールするのに役立ちました
dtburgess

素晴らしい!これは、opensslに依存する他の宝石(プーマなど)に行く方法でもあります
モルグラー2017

この回答は承認された回答よりも優れていると思います。bundle install実際のgemインストールを実行するために使用されるため、バンドルで指定された正確なバージョンをインストールすることが保証されます。あなたが含まれていない限り受け入れ答えは、最新バージョンをインストールします-v x.x.xgem install手動でコマンド。
Ernesto

115
brew link --force openssl

次に:

gem install eventmachine

それも修正します:

  • gem install taks
  • バンドルインストール
  • 熊手とレールのタスク

PSおそらくあなたは削除してbrew install openssl再度実行する必要があります

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


10
これは確かにEl Capitanの修正でした。
jhedstrom、2015

明確にするために、brewの削除/インストール/リンクの順序は何
Abram

7
@Abramの場合、brew link --force openssl影響はありませんでした。次にやるbrew uninstall opensslbrew install opensslbrew link --force openssl
itsnikolay

これが今日のMacでの答えです(El Capitan、2015-2016)。編集:醸造opensslを強制するだけです。EventMachineのバージョンを指定する必要はありませんでした(私はMiddlemanをインストールしていました)。
Ryan Bosinger

1
私のためにも働いた。よかった。
Kees Briggs、2017年

13
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

1
なぜpristine代わりにinstall
Ricardo Freitas

4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/include私のために働いた。
Dylanthepiguy 2017年

8

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

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

次に、最初にインストールしようとしていたgemをインストールできます。

gem install mailcatcher

8

私は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


2
前にハイフンが必要I/usr/local/opt/openssl/includeです。これは1文字なので、stackoverflowで編集できません
MaicolBen

1
修正しました@MaicolBen
blockloop

4

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

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

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


4

これは私にとって問題を解決しました:

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

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


不必要に複雑、なぜvarを設定するだけではないのですか:export PKG_CONFIG_PATH = $(brew --prefix openssl)/ lib / pkgconfig#これで、パッケージをインストールしたり、.bashrcに追加したり、使用したりすることができます
Gerry Gleason

0

これは私のために働きました-

    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をオフにした、またはプロキシ設定をオンにする必要がある場合がある

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ます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.