gem eventmachine ölümcül hatası: 'openssl / ssl.h' dosyası bulunamadı


265

Sadece El Capitan yüklü ve gem yükleyemezsiniz eventmachine 1.0.7. opensslolduğunu 1.0.2a-1. Kullanmaya çalıştı--with-ssl-dir ama görmezden geliyor gibi görünüyor.

Bunu github repolarına da bildirdiler .

Herhangi bir öneriniz gerçekten takdir edilmektedir. Teşekkürler.

$ 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

Yanıtlar:


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

Ayrıca böyle bir paketleyici kurabilirsiniz, ancak bunun yüzeysel olduğunu düşünüyorum

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

2
Benim için, bu işe başlamadan önce openssl kurmak zorunda kaldı. örn brew install openssl.
Ryan Walls

1
Eğer taşlar sizin repo belirli bir dizine kurduysanız, yani vendor/bundleo zaman çalıştırmak isteyecektir bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include. Bu aynı pumazamanda diğer taşlar için de olduğunu hayal böylece mücevher ile aynı şeyi çalıştırmak zorunda kaldı .
Colton Fent

4
şu yanıtı inceleyin: lloeki 'bundle config build.eventmachine --with-cppflags = -I $ (demlemek --prefix openssl) / include'. Bu benim için çalıştı. Bu değil.
justingordon

2
Bu benim gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includeiçin OSX El Capitan 10.11.5 üzerinde çalıştı
Jagdeep Singh

kurulumdan sonra brew install opensslbenim için yapmam gerekbrew link openssl --force
Sr. Oshiro

231

Paketçi ve homebrew kullanırken:

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

1
Benim için, bu işe başlamadan önce openssl kurmak zorunda kaldı. ör. brew install openssl
Ryan Walls

Bu sürüm bana yakut 2.1.2 üstüne eventmachine 1.0.3 yüklemek için çalıştı
dtburgess

Fantastik! Bu aynı zamanda
openssl'ye

Bu cevabın onaylanandan daha iyi olduğunu düşünüyorum, çünkü bundle installgerçek gem kurulumunu gerçekleştirmek için kullandığı için, paketinizde belirtilen tam sürümü kuracağınızı garanti eder. Eklemek sürece kabul cevap, en son sürümünü yüklemek olacaktır -v x.x.xiçinde gem installelle komuta.
Ernesto

115
brew link --force openssl

Sonra:

gem install eventmachine

Ayrıca şunları da düzeltir:

  • gem yüklemek taks
  • paket yükleme
  • tırmık ve ray işleri

PS Muhtemelen kaldırmanız ve çalıştırmanız gerekecek brew install openssl tekrar

Sorun, Apple'ın OSX'ten openssl'yi kaldırması nedeniyle oldu (El Captain derlemesinde)


10
Bu gerçekten El Capitan'ın düzeltmesiydi.
jhedstrom

Açıklığa kavuşturmak için, demleme kaldırma / yükleme / bağlantı sırası nedir
Abram

7
@Abram Etkisi olmamışsa brew link --force openssl. Sonra bunu brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay

Bugün bir Mac'in cevabı bu (El Capitan, 2015-2016). EDIT: Sadece demlemek openssl zorlamak. EventMachine (Middleman yüklüyordum) sürümünü belirtmem gerekmiyordu.
Ryan Bosinger

1
Benim için de çalıştı. İyi karar.
Kees Briggs

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

bozulmamış eski gem kaldırır ve yeniden derler.

Cpp flags seçeneği, derleyicinin openssl başlıklarını bulmasını sağlar.

İsterseniz sürümü de ekleyebilirsiniz:

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

1
neden pristineyerine install?
Ricardo Freitas

4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includebenim için çalıştı.
Ocak'ta Dylanthepiguy

8

EventMachine'ı başka bir gem'in bağımlılığı olarak yüklüyorsanız gem'i manuel olarak yüklerken doğru sürümü belirttiğinizden emin olun:

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

Sonra başlangıçta yüklemeye çalıştığınız gem'i yükleyebilirsiniz:

gem install mailcatcher


4

Alternatif olarak, kullanıcı profilinizin tamamı için aşağıdaki gibi bir bundler yapılandırma girişi eklemektir:

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

ana dizininizde bir .bundle / config dosyası oluşturur ve bu dosya daha sonra çalıştırdığınızda tüm projelerinizde kullanılır bundle install.


4

Bu benim için problemi çözdü:

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

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


Sadece Var ayarlanmamış neden Unecessarily, komplike: ihracat PKG_CONFIG_PATH = $ (demlemek --prefix openssl) / lib / pkgconfig # şimdi Bashrc eklemek herhangi paketleri yükleyebilir veya Kullandığınız
Gerry Gleason'I

0

Bu benim için çalıştı -

    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

NOT: - Bu gem başarıyla yükleyebilmeden önce, birkaç şey yapmak zorunda kaldım. Bunlar sizin için geçerli olabilir, bu yüzden onları burada listelemek -

1.) şirket VPN'sini kapattı VEYA proxy ayarlarını AÇIK duruma getirmeniz gerekebilir

2.) PKG_CONFIG_PATH - olarak ayarlandı

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

3.) bash_profile içinde $ PATH'a aşağıdakileri eklemek zorunda kaldım (benim durumumda ~ / .zshrc)

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

4.) Ayrıca, bu SO yazısında aldığım bazı cevapların aksine ve ayrıca github-eventmachine'deki bu iş parçacığının aksine , yükleyemedimeventmachine

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.

Görünüşe /usr/local/opt/openssl/includegöre doğru yer değil /usr/local/include, openssl konumunu belirtirken.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.