macos - OpenSSL लिंक करने से मना करने वाले होमब्रे




homebrew .net-core (8)

मैं पर हूँ: OSX 10.11.6, Homebrew संस्करण 0.9.9m ओपनएसएसएल 0.9.8zg 14 जुलाई 2015

मैं डॉटनेटकोर के साथ और उनके instructions पालन ​​करके खेलने की कोशिश कर रहा हूं,

मैंने खुलने के नवीनतम संस्करण को उन्नत / स्थापित किया है:

> brew install openssl
==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
Already downloaded: /Users/administrator/Library/Caches/Homebrew/openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Pouring openssl-1.0.2h_1.el_capitan.bottle.tar.gz
==> Caveats
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local.

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

लेकिन जब मैं ओप्सनल लिंक करने की कोशिश करता हूं तो मैं इस लिंकिंग एरर में चलता रहता हूं:

> brew link --force openssl
Warning: Refusing to link: openssl
Linking keg-only OpenSSL means you may end up linking against the insecure,
deprecated system version while using the headers from the Homebrew version.
Instead, pass the full include/library paths to your compiler e.g.:
  -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib

संकलक झंडे को शामिल करने का विकल्प मेरे लिए मायने नहीं रखता है, क्योंकि मैं इन पुस्तकालयों का संकलन नहीं कर रहा हूं जो मैं निर्भर हूं।

EDIT डॉटनेटकोर ने उनके निर्देशों को अपडेट किया है:

brew update    
brew install openssl    
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/    
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/

यदि आपके मैक को स्थानांतरित करने से होमब्रे टूट जाता है:

मैंने अपने मैक को माइग्रेट किया, और इसने मेरे सभी होमब्रेव इंस्टाल को खोल दिया - ओपनएसएसएल सहित। इसने gem install , जो कि मैंने पहली बार समस्या को देखा और इसे सुधारने की कोशिश करने लगा।

एक लाख समाधानों के बाद (जब OSX सिएरा - 10.12.5 पर माइग्रेट हो रहा है), समाधान तेजी से सामान्य रूप से समाप्त हो रहा है:

brew reinstall ruby
brew reinstall openssl

Edwardthesecond से ऊपर के समाधान ने मेरे लिए भी सिएरा पर काम किया

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl 
 ./configure && make

अन्य कदम मैंने पहले किए थे:

  • काढ़ा के माध्यम से Opensl स्थापित करना

    brew install openssl
    
  • होमब्रेव द्वारा सुझाए गए रास्ते में खुलता है

    brew info openssl
    echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
    

इसी से मेरा काम बना है:

brew update
brew install openssl
ln -s /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/lib/
ln -s /usr/local/Cellar/openssl/1.0.2j/bin/openssl /usr/local/bin/openssl

इस धागे पर @dorlandode के लिए धन्यवाद github.com/Homebrew/brew/pull/597

नायब: मैंने इसे केवल एक अस्थायी फिक्स के रूप में इस्तेमाल किया था जब तक कि मैं सही तरीके से खरोंच से ओपन्सल को स्थापित करने में समय व्यतीत नहीं कर सकता। जैसा कि मुझे याद है कि मैंने एक दिन डिबगिंग का सबसे अच्छा हिस्सा बिताया है और इससे पहले कि मुझे सबसे अच्छा तरीका महसूस हो रहा था कि मुझे एक के बाद एक आवश्यक सीरियलों को मैन्युअल रूप से स्थापित करना था। इसे आज़माने से पहले कृपया @ bouke की टिप्पणी में लिंक पढ़ें।


जैसा कि अन्य उत्तर के अद्यतन से पता चलता है, पुराने खुलने वाले पीएसएल ११० को स्थापित करने का समाधान अब काम नहीं करेगा। अभी-अभी वर्कअराउंड के लिए, इस टिप्पणी को डॉटनेट / cli # 3964 पर देखें

यहां कॉपी किए गए मुद्दे का सबसे प्रासंगिक हिस्सा:

मैंने दूसरे विकल्प पर ध्यान दिया, जो पुस्तकालय पर रथ को स्थापित करने के लिए सुझाया गया था। मुझे लगता है कि निम्नलिखित एक बेहतर समाधान है जो केवल इस विशिष्ट पुस्तकालय को प्रभावित करेगा।

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Security.Cryptography.Native.dylib

और / या यदि आपके पास NETCore 1.0.1 स्थापित है, तो 1.0.1 के लिए भी यही आदेश है:

sudo install_name_tool -add_rpath /usr/local/opt/openssl/lib /usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.1/System.Security.Cryptography.Native.dylib

वास्तव में, ऑपरेटिंग सिस्टम को हमेशा एसएसबी के होमब्रे संस्करण का उपयोग करने के लिए कहने के बजाय और संभावित रूप से कुछ को तोड़ने के लिए, हम डॉटनेट को सही लाइब्रेरी खोजने का तरीका बता रहे हैं।

यह भी महत्वपूर्ण है, ऐसा लगता है कि Microsoft इस मुद्दे से अवगत है और दोनों के पास (साथ ही साथ बी को कम करने के लिए कुछ तत्काल योजना है) एक दीर्घकालिक समाधान (डॉटनेट के साथ प्रोबाई बंडलिंग ओपनएसएसएल)।

ध्यान देने योग्य बात: /usr/local/opt/openssl/lib वह जगह है जहाँ काढ़ा डिफ़ॉल्ट रूप से जुड़ा होता है:

13:22 $ ls -l /usr/local/opt/openssl
lrwxr-xr-x  1 ben  admin  26 May 15 14:22 /usr/local/opt/openssl -> ../Cellar/openssl/1.0.2h_1

यदि किसी भी कारण से आप काढ़ा स्थापित करते हैं और इसे एक अलग स्थान पर लिंक करते हैं, तो वह रास्ता वह है जिसे आपको एक रथ के रूप में उपयोग करना चाहिए।

एक बार जब आप System.Security.Cryptography.Native.dylib लाइब्रै के rpath को अपडेट कर लेते हैं, तो आपको अपना इंटरेक्टिव सत्र फिर से शुरू करना होगा (यानी, अपना कंसोल बंद करें और दूसरा शुरू करें)।


बस brew info openssl निष्पादित करता है और उस जानकारी को पढ़ता है जहां वह कहता है:

अगर आपको यह सॉफ्टवेयर पहले अपने पेटीएम रन में चाहिए: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile


मेरा भी ऐसा ही मामला है। मैं brews के माध्यम से coversl स्थापित करने की जरूरत है और फिर mitmproxy स्थापित करने के लिए पाइप का उपयोग करें। मुझे वही शिकायत brew link --force से मिलती है। निम्नलिखित समाधान मैं पहुँच गया है: (काढ़ा द्वारा बल लिंक के बिना)

LDFLAGS=-L/usr/local/opt/openssl/lib 
CPPFLAGS=-I/usr/local/opt/openssl/include
PKG_CONFIG_PATH=/usr/local/opt/openssl/lib/pkgconfig 
pip install mitmproxy

यह सीधे सवाल को संबोधित नहीं करता है। मैं वन-लाइनर को छोड़ देता हूं, अगर कोई भी पाइप का उपयोग करता है और ओपनसेल एफएल की आवश्यकता होती है।

नोट: /usr/local/opt/openssl/lib रास्तों को brew info openssl द्वारा प्राप्त किया जाता है


यह मेरे लिए काम किया:

 brew install openssl
 cd /usr/local/include 
 ln -s ../opt/openssl/include/openssl .

सब कुछ आज़माने के बाद मुझे कुछ नहीं मिला और मैंने काम किया, मैंने बस यही कोशिश की:

touch ~/.bash_profile; open ~/.bash_profile

फ़ाइल के अंदर इस लाइन को जोड़ा।

export PATH="$PATH:/usr/local/Cellar/openssl/1.0.2j/bin/openssl"

अब यह काम कर रहा है :)

Jorns-iMac:~ jorn$ openssl version -a
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
//blah blah
OPENSSLDIR: "/usr/local/etc/openssl"

Jorns-iMac:~ jorn$ which openssl
/usr/local/opt/openssl/bin/openssl




.net-core