मणि ईवेंटमाचिन घातक त्रुटि: 'Opensl / ssl.h' फ़ाइल नहीं मिली


265

बस एल Capitan स्थापित है और मणि स्थापित नहीं कर सकते eventmachine 1.0.7opensslपर है 1.0.2a-1। उपयोग करने की कोशिश की, --with-ssl-dirलेकिन यह नजरअंदाज कर दिया।

इसकी रिपोर्ट उनके जीथब रेपो को भी दी।

किसी भी सुझाव वास्तव में सराहना कर रहे हैं। धन्यवाद।

$ 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
मेरे लिए, मुझे इस काम से पहले सबसे पहले Opensl इंस्टॉल करना था। उदा brew install openssl
रयान वॉल्स

1
यदि आप अपने रत्नों को अपने रेपो में एक विशिष्ट निर्देशिका में सेट करते हैं, vendor/bundleतो आप उसे चलाना चाहेंगे bundle config build.GEMNAME--with-cppflags=-I/usr/local/opt/openssl/include। मुझे मणि के साथ भी यही काम करना था pumaइसलिए मुझे लगता है कि यह अन्य रत्नों के लिए भी हो रहा है।
कोल्टन फेंट

4
इसके साथ उत्तर देखें: 'lleeki से बंडल कॉन्फिडेंट बिल्ड। एवेंटमैचिन - लिथ-कैपफ्लैग्स = -I $ (ब्रूफ़ -प्रिफ़िक्स ओपनसेल) / शामिल करें'। मेरे लिए यही काम किया। यह नहीं।
justingordon

2
इसने मेरे लिए gem install eventmachine -v 1.0.8 -- --with-cppflags=-I/usr/local/opt/openssl/includeOSX El Capitan 10.11.5
जगदीप सिंह

मेरे लिए स्थापित करने के बाद मुझे brew install opensslकरना होगाbrew link openssl --force
सीनियर ओशिरो

231

बंडल और होमब्रे का उपयोग करते समय:

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

1
मेरे लिए, मुझे इस काम से पहले सबसे पहले Opensl इंस्टॉल करना था। जैसे brew install openssl
रयान वॉल्स

इस संस्करण ने रूबी 2.1.2 के शीर्ष पर इवेंटमेचिन 1.0.3 को स्थापित करने के लिए मेरे लिए काम किया
dtburgess

बहुत खुबस! यह भी अन्य रत्नों के लिए जाने का रास्ता (जैसे प्यूमा) कि openssl पर निर्भर है
morgler

मुझे लगता है कि यह उत्तर स्वीकृत एक से बेहतर है, क्योंकि चूंकि यह bundle installवास्तविक रत्न स्थापना का उपयोग करता है, यह गारंटी देता है कि आप अपने बंडल में निर्दिष्ट सटीक संस्करण स्थापित करेंगे। स्वीकार किए जाते हैं जवाब नवीनतम संस्करण स्थापित हो जाएगा, जब तक आप शामिल -v x.x.xमें gem installमैन्युअल रूप से आदेश।
अर्नेस्टो

115
brew link --force openssl

फिर:

gem install eventmachine

यह भी ठीक करता है:

  • मणि स्थापित taks
  • बंडल स्थापित करें
  • रेक और रेल कार्य

PS शायद आपको brew install opensslफिर से निकालने और चलाने की आवश्यकता होगी

यह मुद्दा खुश करता है क्योंकि Apple ने OSX (एल कैप्टन बिल्ड में) से Opensl को हटा दिया था


10
यह वास्तव में एल Capitan पर तय था।
जेदस्ट्रॉम

स्पष्टीकरण के लिए, शराब निकालने / स्थापित करने / लिंक करने का क्रम क्या है
अब्राम

7
@ अंब्रम के मामले में brew link --force opensslकोई प्रभाव नहीं पड़ा। तब करना brew uninstall openssl, brew install openssl,brew link --force openssl
itsnikolay

यह एक मैक आज (एल Capitan, 2015-2016) पर जवाब है। संपादित करें: बस काढ़ा खुलने मजबूर करता है। मुझे EventMachine का एक संस्करण निर्दिष्ट करने की आवश्यकता नहीं थी (मैं मिडिलमैन स्थापित कर रहा था)।
रयान बोसिंगर

1
मेरे लिए भी काम किया। अच्छा निर्णय।
कीस ब्रिग्स

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

प्राचीन मणि को हटाकर प्राचीन इसे फिर से बनाता है।

सीपीपी झंडे का विकल्प कंपाइलर को ओपनसेल हेडर खोजने की अनुमति देता है।

यदि आप चाहें तो संस्करण भी जोड़ सकते हैं:

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

1
pristineइसके बजाय क्यों install?
रिकार्डो फ्रीटस

4
gem install eventmachine -- --with-cppflags=-I/usr/local/opt/openssl/includeमेरे लिए काम किया।
दिलेनथेपीगुई

8

यदि आप EventMachine को किसी अन्य मणि की निर्भरता के रूप में स्थापित कर रहे हैं, तो मणि को मैन्युअल रूप से स्थापित करते समय सही संस्करण निर्दिष्ट करना सुनिश्चित करें:

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

फिर आप उस रत्न को स्थापित कर सकते हैं जिसे आप मूल रूप से स्थापित करने की कोशिश कर रहे थे:

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
इसे तय किया गया @MaicolBen
42

4

एक विकल्प यह है कि आपके पूरे उपयोगकर्ता प्रोफ़ाइल के लिए एक बंडलर कॉन्फिगर प्रविष्टि जोड़ी जाए, जैसे:

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


अनावश्यक रूप से जटिल, बस सेट क्यों न करें: निर्यात PKG_CONFIG_PATH = $ (brew-prefix opensl) / 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

नोट: - इससे पहले कि मैं इस मणि को सफलतापूर्वक स्थापित करने में सक्षम था, मुझे कुछ चीजें करनी थीं। ये आपके लिए लागू हो सकते हैं, इसलिए उन्हें यहां सूचीबद्ध करें -

1.) कॉर्पोरेट-वीपीएन बंद हो गया या आपको प्रॉक्सी सेटिंग्स चालू करना पड़ सकता है

2.) PKG_CONFIG_PATH को सेट किया गया था -

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

3.) निम्नलिखित को $ $ PATH को bash_profile (मेरे मामले में ~ / .zshrc में) जोड़ना था।

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

4.) यह भी ध्यान दें, कि इस एसओ पोस्ट में मुझे मिले कुछ उत्तरों के विपरीत, और इस थ्रेड पर भी गितुब-इवेंटमेचिन , मैं स्थापित करने में सक्षम नहीं था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.

ऐसा लगता /usr/local/opt/openssl/includeहै कि सही स्थान है न /usr/local/includeकि खुलने वाले स्थान को निर्दिष्ट करते समय।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.