openssl@1.1 не используется? dyld: Библиотека не загружена: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

#openssl #homebrew #dyld #pyenv #libssh2

#openssl #homebrew #dyld #pyenv #libssh2

Вопрос:

При попытке установить python через pyenv я столкнулся с неприятной ошибкой динамической ссылки для openssl, хотя я установил и настроил openssl@1.1 через homebrew месяцами ранее:

 $ pyenv install -v 3.8.2
pyenv: /Users/fire/.pyenv/versions/3.8.2 already exists
continue with installation? (y/N) y
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
/var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807114817.54648 ~/projects
Downloadin& Python-3.8.2.tar.xz...
-&&t; https://www.python.or&/ftp/python/3.8.2/Python-3.8.2.tar.xz
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/opt/libssh2/lib/libssh2.1.dylib
  Reason: ima&e not found
/usr/local/bin/python-build: line 355: 55387 Abort trap: 6           aria2c --allow-overwrite=true --no-conf=true -o "${out}" ${ARIA2_OPTS} "$1" 1&&t;amp;4
error: failed to download Python-3.8.2.tar.xz

BUILD FAILED (OS X 10.14.6 usin& python-build 20180424)
  

Я дважды проверил все свои пути на openssl@1.1 , попытался переустановить pyenv через homebrew и т.д., И до этого момента ничего не работало.

Ответ №1:

вкратце: Проверьте библиотеки, ссылающиеся на отсутствующую динамическую библиотеку, и подтвердите, что вы также перестроили их после изменения версий openssl.
Перестроить можно либо с помощью обновления версии с помощью brew up&rade , либо переустановкой проблемного пакета с помощью brew reinstall .

Почему? Похоже, что Homebrew не учитывает libssh2 зависимость от openssl@1.1 и, следовательно, не перестраивает ее автоматически, как это было бы в противном случае.


Процесс исследовательской отладки:

Поломав голову, погуглив и ТАК в течение часа, я еще раз взглянул на сбой:

 dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
  Referenced from: /usr/local/opt/libssh2/lib/libssh2.1.dylib
  Reason: ima&e not found
  

Оттуда я заметил, что libssh2 была причиной неудачной ссылки:

   Referenced from: /usr/local/opt/libssh2/lib/libssh2.1.dylib
  

По наитию я проверил версию libssh2, установленную homebrew:

 $ brew info libssh2
libssh2: stable 1.9.0 (bottled), HEAD
C library implementin& the SSH2 protocol
https://libssh2.or&/
/usr/local/Cellar/libssh2/1.8.0 (182 files, 798.7KB) *
  Poured from bottle on 2018-11-14 at 17:45:34
From: https://&ithub.com/Homebrew/homebrew-core/blob/HEAD/Formula/libssh2.rb
License: BSD-3-Clause
==&&t; Dependencies
Required: openssl@1.1 ✔
==&&t; Options
--HEAD
    Install HEAD version
==&&t; Analytics
install: 38,765 (30 days), 110,674 (90 days), 607,725 (365 days)
install-on-request: 2,946 (30 days), 4,789 (90 days), 19,954 (365 days)
build-error: 0 (30 days)
  

Ах, возможно, это оно! Это было установлено еще в 2018 году!

   Poured from bottle on 2018-11-14 at 17:45:34
  

Еще один brew up&rade libssh2 момент, и мы в деле

 ==&&t; Up&radin& 1 outdated packa&e:
libssh2 1.8.0 -&&t; 1.9.0_1
==&&t; Up&radin& libssh2 1.8.0 -&&t; 1.9.0_1
==&&t; Downloadin& https://homebrew.bintray.com/bottles/libssh2-1.9.0_1.mojave.bottle.tar.&z
==&&t; Downloadin& from https://d29vzk4ow07wi7.cloudfront.net/327c56ad6a54894e5ef9aa3019d2444d32f1d0fba80925940100e517dd3109c9?response-content-disposition=attachment;filename="libssh2-1.9.0_1.mojave.bottle.tar.&z"amp;Policy
######################################################################## 100.0%
==&&t; Pourin& libssh2-1.9.0_1.mojave.bottle.tar.&z
🍺  /usr/local/Cellar/libssh2/1.9.0_1: 184 files, 942KB
Removin&: /usr/local/Cellar/libssh2/1.8.0... (182 files, 798.7KB)

...

  

И, исходя из этого, наша первоначальная проблема решена:

 $ pyenv install -v 3.8.2
pyenv: /Users/fire/.pyenv/versions/3.8.2 already exists
continue with installation? (y/N) y
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
/var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807115352.60918 ~/projects
Downloadin& Python-3.8.2.tar.xz...
-&&t; https://www.python.or&/ftp/python/3.8.2/Python-3.8.2.tar.xz

08/07 11:53:54 [NOTICE] Downloadin& 1 item(s)
[#25162c 0B/0B CN:1 DL:0B]

08/07 11:53:55 [NOTICE] Allocatin& disk space. Use --file-allocation=none to disable it. See --file-allocation option in man pa&e for more details.
[#25162c 9.0MiB/17MiB(52%) CN:1 DL:9.8MiB]

08/07 11:53:56 [NOTICE] Download complete: /private/var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807115352.60918/Python-3.8.2.tar.xz

Download Results:
&id   |stat|av& speed  |path/URI
====== ==== =========== =======================================================
25162c|OK  |   9.9MiB/s|/private/var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807115352.60918/Python-3.8.2.tar.xz

Status Le&end:
(OK):download completed.
/var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807115352.60918/Python-3.8.2 /var/folders/c3/cmbbfq710rvdh4l82q2h_86ds4cblh/T/python-build.20200807115352.60918 ~/projects
Installin& Python-3.8.2...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk
checkin& build system type... x86_64-apple-darwin18.7.0

...
  

Ответ №2:

Сегодня у меня такая же проблема, но в моем случае libssh2 они уже обновлены.

Что мне подходит, так это переустановить libssh2 :

 brew reinstall libssh2