macos - البيرة يرفض ربط OpenSSL




homebrew .net-core (8)

أنا على: OSX 10.11.6 ، إصدار Homebrew 0.9.9m OpenSSL 0.9.8zg 14 يوليو 2015

أحاول اللعب مع dotnetcore واتباع instructions الخاصة بهم ،

لقد قمت بترقية / تثبيت أحدث إصدار من openssl:

> 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

ولكن عندما أحاول الارتباط openssl ، استمر في تشغيل هذا الخطأ في الرابط:

> 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 dotnetcore بتحديث إرشاداتهم:

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/

إذا كان ترحيل جهاز Mac يكسر البيرة:

لقد قمت بترحيل نظام التشغيل mac الخاص بي ، وقد ألغيت جميع عمليات تثبيت البيرة المنزلية - بما في ذلك OpenSSL. هذا gem install ، وهو ما لاحظت المشكلة لأول مرة وبدأت في محاولة إصلاحها.

بعد حلول مليون (عند الانتقال إلى OSX Sierra - 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

الخطوات الأخرى التي قمت بها من قبل هي:

  • تثبيت openssl عن طريق الشراب

    brew install openssl
    
  • مضيفا openssl إلى المسار كما اقترح من البيرة

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

بعد تجربة كل شيء يمكنني العثور عليه ولم ينجح شيء ، حاولت فقط هذا:

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

كما يوحي التحديث للإجابة الأخرى ، لن يعمل الحل البديل لتثبيت المشروب openssl101 القديم. للحصول على حل في الوقت الحالي ، راجع هذا التعليق على dotnet / cli # 3964 .

الجزء الأكثر صلة بالموضوع الذي تم نسخه هنا:

نظرت إلى الخيار الآخر الذي تم اقتراحه لإعداد rpath على المكتبة. أعتقد أن ما يلي هو الحل الأفضل الذي سيؤثر فقط على هذه المكتبة المحددة.

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

في الواقع ، بدلاً من إخبار نظام التشغيل دائمًا باستخدام الإصدار الأصلي من SSL وإمكانية حدوث شيء ما ، فإننا نعلم dotnet كيفية العثور على المكتبة الصحيحة.

من المهم أيضًا ، يبدو أن Microsoft على دراية بالمشكلة ولديها أ) خطة فورية إلى حد ما لتخفيف وكذلك ب) حل طويل الأجل (probaby يجمع OpenSSL مع dotnet).

شيء آخر يجب ملاحظته: /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

إذا كنت تقوم بتثبيت هذا الشراب لأي سبب من الأسباب وربطه في موقع مختلف ، فهذا المسار هو المسار الذي يجب عليك استخدامه ك rpath.

بمجرد تحديث rpath لـ libray System.Security.Cryptography.Native.dylib ، ستحتاج إلى إعادة تشغيل جلسة العمل التفاعلية (على سبيل المثال ، إغلاق وحدة التحكم الخاصة بك وبدء واحدة أخرى).


لم يعمل أي من هذه الحلول على OS X El Capitan 10.11.6. ربما لأن OS X لديه إصدار أصلي من openssl يعتقد أنه متفوق ، وعلى هذا النحو ، لا يحب العبث به.

لذلك ، أخذت الطريق السريع وبدأت جديدة ...

تثبيت يدويا والارتباط

cd /usr/local/src  
  • إذا كنت تحصل على "لا يوجد ملف أو دليل مثل" ، فاجعله:

    cd /usr/local && mkdir src && cd src

تحميل openssl:

curl --remote-name https://www.openssl.org/source/openssl-1.0.2h.tar.gz

استخراج و cd في:

tar -xzvf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

ترجمة وتثبيت:

./configure darwin64-x86_64-cc --prefix=/usr/local/openssl-1.0.2h shared
make depend
make
make install

الآن يفتح نظام التشغيل symlink OS X الخاص بك على opensl الجديد والمحدث.

ln -s /usr/local/openssl-1.0.2h/bin/openssl /usr/local/bin/openssl

أغلق المحطة الطرفية ، وافتح جلسة جديدة ، وتحقق من أن OS X يستخدم openssl الجديد:

openssl version -a

مجرد تنفيذ brew info openssl وقراءة المعلومات حيث تقول:

إذا كنت بحاجة إلى تشغيل هذا البرنامج أولاً في PATH لديك: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile


هذا عملت لي:

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

هذا هو ما نجح لي:

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

ملاحظة: أنا فقط استخدم هذا كإصلاح مؤقت حتى أقضي الوقت في تثبيت Openssl بشكل صحيح من البداية. كما أتذكر أنني قضيت أفضل جزء من تصحيح الأخطاء يوميًا وأواجه مشكلات قبل أن أدركت أن أفضل طريقة هي تثبيت الأدوات التي احتاجها يدويًا واحدة تلو الأخرى. يرجى قراءة الرابط في تعليق @ bouke قبل محاولة ذلك.





.net-core