"/Usr/lib/libcrypto.dylib" দিয়ে ম্যাকস 10.15 বিটা (19A582a) এ পাইথন ক্র্যাশ করছে


47

আমি আমার জাজানো প্রকল্পটি নতুন ম্যাকস ক্যাটালিনা দিয়ে চালিয়েছিলাম এবং ভাল চলছে fine
আমি oh_my_zsh ইনস্টল করেছি তারপরে আমি একই প্রকল্পটি চালানোর চেষ্টা করেছি যা এটি নিম্নলিখিত ত্রুটিগুলির সাথে ক্র্যাশ হচ্ছে। আমি oh_my_zsh আনইনস্টল করে আবার চেষ্টা করেছি কিন্তু এটি কার্যকর হয়নি।

Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        Python [7526]
Responsible:           Terminal [7510]
User ID:               501

Date/Time:             2019-10-07 20:59:20.675 +0530
OS Version:            Mac OS X 10.15 (19A582a)
Report Version:        12
Anonymous UUID:        CB7F20F6-96C0-4F63-9EC5-AFF3E0989687


Time Awake Since Boot: 3000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

যদি আপনি কোনও ভার্চুয়ালনেভে থাকেন: আমার জন্য ভেনভের একটি (সম্পূর্ণ) পুনরায় সেট করার কাজ করেছেন (এটি মুছে ফেলা এবং এটি সমস্ত নির্ভরতার সাথে পুনরায় তৈরি করা ইত্যাদি)
বস্টি

উত্তর:


94

আমি ঠিক একই সমস্যাটি দেখতে পেয়েছি এবং চারপাশের জিনিসগুলিকে ম্যানুয়ালি লিঙ্ক করতে কিছুটা অস্বস্তি বোধ করেছি।

আমি সহজভাবে সমস্যাটি সমাধান করতে সক্ষম হয়েছি

  1. হোমব্রিউয়ের মাধ্যমে ওপেনসেল ইনস্টল করা:
    brew install openssl
  2. DYLD_LIBRARY_PATH এর মাধ্যমে ওপেনসেল থেকে গতিশীল লাইব্রেরিগুলির দিকে ইঙ্গিত করছে:
    export DYLD_LIBRARY_PATH=/usr/local/opt/openssl/lib:$DYLD_LIBRARY_PATH

আমি স্রেফ আমার .zshrc এ লাইনটি যুক্ত করেছি।

সম্পাদনা: এই প্রশ্ন অনুসারে , ব্যবহারের চেয়ে বেশি পছন্দ DYLD_FALLBACK_LIBRARY_PATHহতে পারে DYLD_LIBRARY_PATH

সম্পাদনা করুন 2: যখন নীচে একটি মন্তব্যে উল্লেখ করা হয়েছে, এই সম্ভবত গৃহীত উত্তর হওয়া উচিত। কেবল cryptographyপ্যাকেজটি পুনরায় ইনস্টল করুন ।


19
সিস্টেমটি
বিশৃঙ্খলা

এটি কমান্ড লাইনে আমার পক্ষেও কাজ করেছিল, তবে এটি স্ক্রিপ্টগুলির জন্য কাজ করে না। কিছু অনুপস্থিত থাকতে পারে?
আর্নেস্তো

2
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/opt/openssl/libআপনি বর্ণিত হিসাবে কাজ নিশ্চিত করতে পারে । ভকভগক!
লুক হোরস্টেন

1
জিনিস কাজ করার জন্য এটি দুর্দান্ত তবে এটি পুরোপুরি সমাধান করে না। আমার কাছে কিছু ক্রোন্টাব কাজ রয়েছে যা পাইথনটি ব্যবহার করা দরকার এবং আমি নিশ্চিত করতে চাই না যে তাদের সকলের এই এনভিও সেটআপ রয়েছে। আমি নীচে @ আন্দ্রেয়ের সমাধানটি পছন্দ করি। এটি সর্বশেষতম ওপেনসেল লিবগুলি যা-ই হোক না কেন তার सिিমলিংক সেট আপ করে যাতে ভবিষ্যতে এটি আপগ্রেড হওয়ার সাথে সাথে লিঙ্কগুলিও তত ভাল হয়। stackoverflow.com/a/58596931/142318
ক্রিস

1
প্রত্যেকের এই নীচের আগে @ টোনি স্টার্কসের উত্তরটি চেষ্টা করা উচিত, এটি আপনার পক্ষে কেবল একটি সহজ আনইনস্টল এবং পুনরায় ইনস্টল হতে পারে
মিশেল সি ওয়ালাস

38

ক্যাভেট: আমি কোনও সুরক্ষা বিশেষজ্ঞ নই, এবং এই সমাধানটি ক্রিপ্টো লাইব্রেরিগুলিতে গণ্ডগোল করে!

আমি মনে করি না যে আপনার ইস্যুটি zsh বা ওহ-আমার- zsh থেকে এসেছে। আমার সেরা অনুমান: MacOS 10.15 এর সাথে ইনস্টল করা কিছু ক্রিপ্টো লাইব্রেরি হোমব্রব্লোর python3ইনস্টলেশনটির সাথে বেমানান ।

এখানে আমার জন্য সমস্যাটি স্থির হয়েছে

# Install openssl via homebrew.
# Note: According to homebrew, "openssl is keg-only, which means it was
# not symlinked into /usr/local, because Apple has deprecated use of
# OpenSSL in favor of its own TLS and crypto libraries."
brew install openssl
# Symlink those versions into /usr/local/lib, which gets Python to dynamically
# link against those instead of the version in /usr/lib/.
# Got the idea from https://forums.developer.apple.com/thread/119429
cd /usr/local/lib
sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libssl.1.0.0.dylib libssl.dylib
sudo ln -s /usr/local/Cellar/openssl/1.0.2t/lib/libcrypto.1.0.0.dylib libcrypto.dylib

প্রসঙ্গে আমার পরিস্থিতি:

  • সম্প্রতি ম্যাকস 10.15 এ আপগ্রেড করা হয়েছে
  • আমি হোমব্রিউয়ের মাধ্যমে পাইথন / পাইপ ইনস্টল করি: brew install python
  • pip3 ব্যর্থ ছিল SIGABRT

সিস্টেম ত্রুটির রিপোর্টের শিরোনাম:

Process:               Python [52429]
Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        zsh [43309]
Responsible:           iTerm2 [2316]
User ID:               501

Date/Time:             2019-10-09 09:52:18.148 -0700
OS Version:            Mac OS X 10.15 (19A583)
Report Version:        12
Bridge OS Version:     4.0 (17P572)
Anonymous UUID:        

Sleep/Wake UUID:       

Time Awake Since Boot: 9900 seconds
Time Since Wake:       7300 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

29

আমার জন্য পাইথনের ক্রিপ্টোগ্রাফি প্যাকেজটি পুনরায় ইনস্টল করা যথেষ্ট ছিল।

pip uninstall cryptography
pip install cryptography

1
এটা আমার জন্য কাজ করেছে। আমার ক্ষেত্রে জবাবদিহিটি সর্বশেষ সংস্করণে ভার্চুয়ালেনভ আপডেট করার পরে কার্যকর করা হয়নি।
hshan

1
এটা কাজ করেছে! ধন্যবাদ! আমার জন্য, এটি pip uninstall cryptographyপরিবর্তে ছিল remove
fzwo

এটি আমার জন্য এটিও স্থির করে দিয়েছে। ধন্যবাদ!
অ্যান্ড্রুডকাটো

এটি নিখুঁতভাবে কাজ করেছে - ধন্যবাদ!
শেরম 4n

হ্যাঁ, এই কৌশলটি করেছে। ধন্যবাদ!
স্টেফেন ফানক

17

আমি @ বিক্সেল, @ ইউরো ওরাভেক এবং @ হংকাবয়ের উত্তরগুলির সংমিশ্রণটি পছন্দ করি:

brew install openssl
cd /usr/local/lib
sudo ln -s /usr/local/opt/openssl/lib/libssl.dylib libssl.dylib
sudo ln -s /usr/local/opt/openssl/lib/libcrypto.dylib libcrypto.dylib

এই পদ্ধতিতে, অন্তত তত্ত্বে, ওপেনসেল আপডেট করার সময় ডাইলিবগুলি সর্বদা সর্বশেষতম সংস্করণগুলিতে নির্দেশ করে। /usr/local/opt/opensslআসলে /usr/local/Cellar/openssl/Cellar/openssl/1.0.2tএটির একটি লিঙ্ক (বারউ দ্বারা ইনস্টল করা ওপেনসেলের সংস্করণ)।

সমস্যাটি হওয়ার কারণটি আসলে মজাদার দ্বারা ব্যাখ্যা করা হয়েছে:

ওপেনসেল কেবল-কেবল, যার অর্থ এটি / ইউএসআর / স্থানীয় মধ্যে সিমিলিং করা হয়নি, কারণ অ্যাপল তার নিজস্ব টিএলএস এবং ক্রিপ্টো লাইব্রেরির পক্ষে ওপেনএসএসএল ব্যবহার অবমূল্যায়ন করেছে।

চালানোর চেষ্টা করছেন brew link openssl:

সতর্কতা: ম্যাকোস-সরবরাহিত সফ্টওয়্যারটি লিঙ্ক করতে অস্বীকার: ওপেনসেল আপনার প্যাথ চালাতে প্রথমে ওপেনএসএল প্রয়োজন হলে: প্রতিধ্বনি 'এক্সপোর্ট PATH = "/ ইউএসআর / স্থানীয় / অপ্ট / ওপেনএসএল / বিন: $ প্যাথ" ">> b / .ব্যাশ_প্রোফাইল

সংকলকগণ ওপেনএসএল সন্ধানের জন্য আপনাকে সেট করতে হবে: এলডিএফএলএফএলজিএস = "- এল / ইউএসআর / স্থানীয় / অপ্ট / ওপেনসেল / লিব" এক্সপোর্ট সিপিপিএফএলএজিএস = "- আই / ইউএসআর / লোকাল / অপট / ওপেনসেল / অন্তর্ভুক্ত"

ওপেনসেল সন্ধানের জন্য পিকেজি-কনফিগারেশনের জন্য আপনাকে সেট করতে হবে: রফতানুন PKG_CONFIG_PATH = "/ usr / local / opt / openssl / lib / pkgconfig"

সুতরাং, মূলত আপনাকে এগুলি ম্যানুয়ালি লিঙ্ক করা দরকার।


15

এই অ্যাপল দেব থ্রেড থেকে আরএসউয়ান হোমব্রুয়ের ইনস্টল থেকে লিবির সাথে লিঙ্কগুলির সাথে এবং লিঙ্কগুলি Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI. প্রতিস্থাপন করে ত্রুটির জন্য একটি ওয়ার্কআরাউন্ডের পদক্ষেপগুলি সনাক্ত করেছে ।libssl.dyliblibcrypto.dylib/usr/local/libopenssl

পদক্ষেপগুলি হ'ল:

তাজা libs পান

1) brew update && brew upgrade && brew install openssl

2) cd /usr/local/Cellar/openssl/1.0.2t/lib

3) sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib/

পুরানোগুলি ব্যাকআপ করুন

4) cd /usr/local/lib

5) mv libssl.dylib libssl_bak.dylib

6) mv libcrypto.dylib libcrypto_bak.dylib

নতুন লিঙ্ক তৈরি করুন

7) sudo ln -s libssl.1.0.0.dylib libssl.dylib

8) sudo ln -s libcrypto.1.0.0.dylib libcrypto.dylib


এটি আমার জন্য ক্যাটালিনা 10.15.4 এ কাজ করেছে, তবে আমার কাছে /usr/local/Cellar/openssl@1.1 ছিল এবং সমতুল্য ফাইলগুলি ব্যবহার করা হয়েছিল। X.1.0.0.dlib ফাইলগুলি ব্যবহার করে, পাইপ 3 এখনও ক্র্যাশ হয়েছে।
অ্যান্ড্রু ডেলোস রেয়েস

4

এটি অবশ্যই কিছু নির্ভরশীলতার ব্যবহার যেমন ক্রিপ্টোগ্রাফি

সমাধান:

cd your-site-packages-path/
vim ./asn1crypto/_int.py

এই লাইনটি সন্ধান করুন; এটি মুছুন, এবং সবকিছু ঠিক আছে

# from ._perf._big_num_ctypes import libcrypto

এখানে আমার সমস্যা

Process:               Python [85179]
Path:                  /usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python
Identifier:            Python
Version:               3.7.4 (3.7.4)
Code Type:             X86-64 (Native)
Parent Process:        ??? [85161]
Responsible:           iTerm2 [11711]
User ID:               501

Date/Time:             2019-10-07 23:00:25.143 +0800
OS Version:            Mac OS X 10.15 (19A582a)
Report Version:        12
Bridge OS Version:     3.0 (14Y906)
Anonymous UUID:        32C73ADD-1291-FA0E-DC02-48D539674325


Time Awake Since Boot: 42000 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/usr/lib/libcrypto.dylib
abort() called
Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI.

4

আমি একই সমস্যা দেখতে পেয়েছিলাম ansible। অপরাধী ছিল asn1crypto, এবং সমস্যাটি ইতিমধ্যে ঠিক করা হয়েছে ।

আমার সমাধানটি হ'ল ম্যানুয়ালি অপসারণ এবং এটি দিয়ে এটি পুনরায় ইনস্টল করা pip:

  1. rm -r /usr/local/lib/python2.7/site-packages/asn1crypto*pipএটি সমস্যা ছাড়াই কাজ করতে দেয় ।
  2. pip install asn1crypto, যা ইনস্টল করা হয়েছে 1.2.0:
  Found existing installation: asn1crypto 0.24.0
    Uninstalling asn1crypto-0.24.0:
      Successfully uninstalled asn1crypto-0.24.0
Successfully installed asn1crypto-1.2.0

দ্রষ্টব্য : ভার্জোজ মোডে asn1cryptoচালিয়ে pythonআপনি দোষী কিনা তা পরীক্ষা করতে পারেন python -v $(which ansible)। আমার ক্ষেত্রে এটি asn1cryptoসম্পর্কিত কিছু আমদানি করার সময় ক্র্যাশ হয়েছিল :

# /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc matches /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.py
import asn1crypto._perf._big_num_ctypes # precompiled from /usr/local/lib/python2.7/site-packages/asn1crypto/_perf/_big_num_ctypes.pyc
[1]    59247 abort      python -v $(which ansible)

সম্পর্কিত: https://github.com/Homebrew/homebrew-core/issues/44996


এটি আমার জন্য কাজ করেছে। আমি শিকড় দ্বারা ট্রেলিস ব্যবহার করছিলাম, যা জবাবদিহি করে। আমি rm -rউত্তরে তালিকাভুক্ত হিসাবে কমান্ডটি করেছি, তারপরে আমি আমার অজগর পরিবেশকে trellis/.trellis/virtualenvডিরেক্টরিতে সরিয়ে দিয়েছিলাম, তারপরে ট্রেলিস-ক্লাইম ব্যবহার করে trellis initযা পাইথনের সাথে পরিবেশ তৈরি করে এবং পাইপের সাহায্যে নির্ভরতা ইনস্টল করে।
রবারব্যাকর্ড

এটি আমার জন্য কাজ করেছে :)
স্মার্টওয়ার্ল্ড-ডিএম

0

আপনি যদি ডেভমেট থেকে কেভলার ব্যবহার করছেন তবে ৪.৩.১ এ আপগ্রেড করুন, যা "লিবক্রিপ্টো.ডিলিব সংস্করণে ফিক্সড ম্যাকোস ক্যাটালিনা ক্র্যাশ"।


0

দেখে মনে হচ্ছে এটি হোমব্রিউ সমস্যা ছিল। আমি করেছি brew reinstall python3এবং এটি কাজ করে।



0

উপরে বর্ণিত উত্তরগুলি অনুসরণ করতে, libssl.dylib ফাইলটি লিঙ্ক করতে চেয়েছিলেন তবে পাওয়া যায় নিচের মতো কোনও স্থান নেই:

/usr/local/Cellar/openssl/1.0.2t/lib/

তবে @ বিক্সেলের গৃহীত উত্তর হিসাবে নীচের লোকেশনটিতে ফাইলটি পাওয়া গেছে

/usr/local/opt/openssl/lib

এবং এটা আমার জন্য কাজ করে।


0

আমি একই সমস্যা যখন আমি ব্যবহার করছিলেন পূরণ ctypes.cdllখুলতে /usr/lib/libcrypto.dylibসঙ্গে Python 3.7। তবে dylibকুল দিয়ে খোলা হবে Python 2.7

আমি এর opensslসাথে সর্বশেষতম ইনস্টল করেছি brew install, তারপরে পরিবেশের ভেরিয়েবলগুলি সেট করেছিলাম এবং লিঙ্কগুলি তৈরি করেছি যা তারা উপরে প্রস্তাব করেছিল, কিছুই ভাল হয়নি good

বেশ কয়েক ঘন্টা খননের পরে, আমি একটি কাজের সমাধান খুঁজে পেয়েছি।

আমি কিছু পাওয়া libcrypto.X.dylibমধ্যে /usr, নিম্নলিখিত হিসাবে

/usr/lib/libcrypto.dylib
/usr/lib/libcrypto.0.9.7.dylib
/usr/lib/libcrypto.0.9.8.dylib
/usr/lib/libcrypto.35.dylib
/usr/lib/libcrypto.41.dylib
/usr/lib/libcrypto.42.dylib
/usr/lib/libcrypto.44.dylib

/usr/local/opt/openssl/lib/libcrypto.1.1.dylib
/usr/local/opt/openssl/lib/libcrypto.dylib

প্রথমত, আমি /usr/libপরিবর্তিতটিকে ব্যবহার করে পরিবর্তে এটিকে প্রতিস্থাপন করতে পারি ।

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = '/usr/local/opt/openssl/lib'

এটি লোড করা যেতে পারে তবে কিছু এপিআই অনুপস্থিত ছিল,

AttributeError: dlsym(0x..., ECDH_OpenSSL): symbol not found

আমি /usr/lib/libcrypto.X.dylibআমার স্ক্রিপ্টের পথে একটি লিঙ্ক তৈরি করেছি।

ln -s /usr/lib/libcrypto.X.dylib lib/libcrypto.dylib

তারপরে পথটি যুক্ত করুন DYLD_FALLBACK_LIBRARY_PATH

os.environ['DYLD_FALLBACK_LIBRARY_PATH'] = 'lib' # It should be a absolute path

শেষ পর্যন্ত, এটি কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.