2015-06-09 10 views
6
$ brew install openssl 
Warning: openssl-1.0.2a-1 already installed 
$ openssl version 
OpenSSL 0.9.8zd 8 Jan 2015 
$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' 
OpenSSL 1.0.1j 15 Oct 2014 
$ rvm -v 
rvm 1.26.11 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/] 

के गलत संस्करण का उपयोग कर रूबी openssl के संस्करणों के बीच मुझे बहुत सारी विसंगतियों को देख रहा है। होमब्रू सोचता है कि यह 1.0.2a-1 पर है, ओपनएसएल स्वयं सोचता है कि यह 0.9.8zd पर है, और रुबी सोचता है कि यह 1.0.1j पर है। मुझे यह भी नहीं पता कि इनमें से कोई वास्तव में अद्यतित है या नहीं!openssl

मैं इस विसंगति को कैसे हल कर सकता हूं और ओपनएसएसएल के सही संस्करण का उपयोग करने के लिए रूबी कैसे प्राप्त कर सकता हूं? तथ्य यह है कि यह गलत संस्करण का उपयोग कर रहा है मुझे सुरक्षित एपीआई का उपयोग करने से रोक रहा है।

उत्तर

8

होमब्रू के साथ ओपनएसएसएल स्थापित करना तुरंत इसे Open OpenL के रूप में लिंक नहीं करेगा। अब, चलो नवीनतम संस्करण के लिए OpenSSL उन्नत करने के लिए सुनिश्चित हो जाने

openssl version -a 
which openssl 
ruby -r openssl -e 'puts OpenSSL::OPENSSL_VERSION' 

:

पहले, आइए जाँच (1.0.2d नवीनतम संस्करण है 10 जुलाई, '15 पर) कौन-सा संस्करण उपयोग कर रहे हैं

brew update 
brew install openssl 
brew unlink openssl 
brew link --force openssl 

यदि आप प्रारंभिक चेक फिर से चलाते हैं, तो आपको पहले स्थापित ओपनएसएसएल को इंगित करने वाला पहला 2 देखना चाहिए। रूबी सबसे पुराना होने की संभावना है क्योंकि इसे इसके साथ संकलित किया गया था।

यदि यह पुराने संस्करण की ओर इशारा कर रहा है, तो चलिए रूबी को पुनः संकलित करें और इसे नए पर इंगित करें। और यह सुनिश्चित करने के लिए कि यह सही संस्करण का उपयोग करेगा, चलिए ओपनएसएसएल उपसर्ग पास करते हैं - हालांकि इसकी आवश्यकता नहीं होनी चाहिए क्योंकि हमने होमब्रू के ओपनएसएसएल को लिंक किया है।

rvm get stable 
rvm install ruby-2.1.6 --with-openssl-dir=`brew --prefix openssl` 

(या rvm reinstall अगर आप पहले से 2.1.6 का उपयोग कर रहे)

यह करना चाहिए।

+2

यह समाधान मेरे लिए काम करता है, लेकिन एफवाईआई के पास ओपनएसएल लिंकिंग के साथ एक चल रहा मुद्दा है जहां 'ब्रू लिंक - फोर्स ओपनएसएल' भी अस्वीकार कर दिया गया है। तो, सुनिश्चित नहीं है कि अनलिंकिंग अभी भी जरूरी है; रूबी इंस्टॉल पर प्रत्यय '--with-openssl-dir' वास्तव में मुझे सबसे ज्यादा मदद मिली है। – dav1dhunt