permata kesalahan fatal fatal: file 'openssl / ssl.h' tidak ditemukan


265

Baru saja menginstal El Capitan dan tidak dapat menginstal permata eventmachine 1.0.7. opensslada di 1.0.2a-1. --with-ssl-dirSudah mencoba menggunakan tetapi tampaknya diabaikan.

Melaporkannya ke repo github mereka juga.

Setiap saran sangat dihargai. Terima kasih.

$ 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

Jawaban:


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

Anda juga dapat mengatur bundler seperti ini tetapi saya pikir itu dangkal

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

2
Bagi saya, saya harus menginstal openssl terlebih dahulu sebelum ini berhasil. mis brew install openssl.
Ryan Walls

1
Jika Anda memiliki permata Anda diatur ke direktori tertentu di repo Anda, yaitu vendor/bundlemaka Anda akan ingin menjalankan bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Saya harus menjalankan hal yang sama dengan permata pumajadi saya membayangkan ini terjadi untuk permata lain juga.
Colton Fent

4
lihat jawaban dengan: 'bundle config build.eventmachine --with-cppflags = -I $ (buatan --prefix openssl) / sertakan' dari lloeki. Itu berhasil bagi saya. Bukan yang ini.
justingordon

2
Ini bekerja untuk saya gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includedi OSX El Capitan 10.11.5
Jagdeep Singh

untuk saya setelah menginstal brew install opensslharus saya lakukanbrew link openssl --force
Sr. Oshiro

231

Saat menggunakan bundler dan homebrew:

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

1
Bagi saya, saya harus menginstal openssl terlebih dahulu sebelum ini berhasil. mis. brew install openssl
Ryan Walls

Versi ini berhasil bagi saya untuk menginstal eventmachine 1.0.3 di atas ruby ​​2.1.2
dtburgess

Fantastis! Ini juga cara untuk mencari permata lain (misalnya puma) yang bergantung pada openssl
morgler

Saya pikir jawaban ini lebih baik daripada yang disetujui, karena sejak digunakan bundle installuntuk melakukan instalasi permata yang sebenarnya, itu menjamin Anda akan menginstal versi tepat yang ditentukan dalam bundel Anda. Jawaban yang diterima akan menginstal versi terbaru, kecuali jika Anda memasukkan -v x.x.xdalam gem installperintah secara manual.
Ernesto

115
brew link --force openssl

Kemudian:

gem install eventmachine

Ini juga memperbaiki:

  • permata menginstal taks
  • bundel instal
  • tugas menyapu dan rel

PS Mungkin Anda harus menghapus dan menjalankan brew install openssllagi

Masalahnya muncul karena Apple telah menghapus openssl dari OSX (di build El Captain)


10
Ini memang perbaikan pada El Capitan.
jhedstrom

Untuk klarifikasi, bagaimana urutan minuman hapus / instal / tautan
Abram

7
@Abram Dalam kasus brew link --force openssltidak berpengaruh. Kemudian lakukan brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay

Ini adalah jawaban pada Mac hari ini (El Capitan, 2015-2016). EDIT: Hanya memaksa brew openssl. Saya tidak perlu menentukan versi EventMachine (saya menginstal Middleman).
Ryan Bosinger

1
Bekerja untuk saya juga. Panggilan yang bagus.
Kees Briggs

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

murni menghilangkan permata tua dan mengkompilasi ulang itu.

Opsi flag cpp memungkinkan kompiler untuk menemukan header openssl.

Anda juga dapat menambahkan versi jika Anda suka:

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

1
mengapa pristinebukannya install?
Ricardo Freitas

4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includebekerja untukku.
Dylanthepiguy

8

Jika Anda menginstal EventMachine sebagai ketergantungan permata lain, pastikan untuk menentukan versi yang benar ketika Anda memasang permata secara manual:

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

Kemudian Anda dapat menginstal permata yang awalnya Anda coba pasang:

gem install mailcatcher


4

Salah satu alternatif adalah menambahkan entri konfigurasi bundler untuk seluruh profil pengguna Anda, seperti ini:

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

itu akan membuat file .bundle / config di direktori home Anda, yang kemudian digunakan di semua proyek Anda ketika Anda menjalankan bundle install.


4

Ini memecahkan masalah bagi saya:

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

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


Tidak perlu rumit, mengapa tidak hanya mengatur var: export PKG_CONFIG_PATH = $ (brew --prefix openssl) / lib / pkgconfig # sekarang Anda dapat menginstal paket apa pun, tambahkan ke .bashrc, atau apa yang Anda gunakan
Gerry Gleason

0

Ini bekerja untuk saya -

    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

CATATAN:- Sebelum saya berhasil menginstal permata ini, saya harus melakukan beberapa hal. Ini mungkin berlaku untuk Anda, jadi cantumkan di sini -

1.) turun dari perusahaan-VPN ATAU Anda mungkin harus mengaktifkan pengaturan proxy

2.) PKG_CONFIG_PATH disetel ke -

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

3.) harus menambahkan yang berikut ke $ PATH di bash_profile (dalam kasus saya ~ / .zshrc)

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

4.) Juga perhatikan, bahwa bertentangan dengan beberapa jawaban yang saya dapatkan di pos SO ini, dan juga utas ini pada github-eventmachine , saya tidak dapat menginstaleventmachine

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.

Tampaknya /usr/local/opt/openssl/includeini adalah lokasi yang tepat dan bukan /usr/local/includesaat menentukan lokasi openssl.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.