Libssl и libcrypto вызывают dyld: библиотека не загружена: /usr/lib/libpq.5.dylib

Недавно я удалил postgresql и установил pyscopg2 через pip.

Я знаю, что с libcrypto и libssl связаны некоторые хитрости.

В настоящее время у меня есть символические ссылки на:

$ ls -lah libssl.*
-rwxr-xr-x  1 root  wheel   402K Aug 28 11:06 libssl.0.9.7.dylib
-rwxr-xr-x  1 root  wheel   589K Aug 28 11:06 libssl.0.9.8.dylib
lrwxr-xr-x  1 root  wheel    55B Nov 29 23:38 libssl.1.0.0.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libssl.1.0.0.dylib
lrwxr-xr-x  1 root  wheel    55B Nov 30 02:25 libssl.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libssl.1.0.0.dylib

/usr/lib
$ ls -lah libcrypto.*
-rwxr-xr-x  1 root  wheel   2.1M Aug 28 11:06 libcrypto.0.9.7.dylib
-rwxr-xr-x  1 root  wheel   2.6M Aug 28 11:06 libcrypto.0.9.8.dylib
-r-xr-xr-x  1 root  wheel   1.6M Oct 31 22:12 libcrypto.1.0.0.dylib
lrwxr-xr-x  1 root  wheel    58B Nov 30 02:27 libcrypto.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libcrypto.1.0.0.dylib

посредством чего я установил openssl через порты

Теперь, когда я запускаю дуговой дифференциал, я получаю печально известную

$ arc diff
dyld: Library not loaded: /usr/lib/libpq.5.dylib
  Referenced from: /usr/bin/php
  Reason: image not found
Trace/BPT trap: 5

Здесь в SO есть несколько ответов, в которых говорится о символической привязке этих библиотек к каталогу установки postgresql. Очевидно, это не сработает для меня.

Что я должен делать?


person disappearedng    schedule 30.11.2012    source источник
comment
Что такое arc? Кроме того, я вижу /usr/bin/php; это не выглядит очень Python для меня. И если вы неустановили postgresql, я не уверен, что pip установит для вас postgresql, если вы установите psycopg2 (хотя, если это не так, скорее всего, произойдет сбой). У вас есть libpq (любой) в вашей системе?   -  person    schedule 30.11.2012


Ответы (3)


Оказывается, /usr/lib/libpq.5.dylib отсутствовал, а /usr/lib/libpq.5.4.dylib — нет.

sudo ln -s /usr/lib/libpq.5.4.dylib /usr/lib/libpq.5.dylib

исправил проблему.

person disappearedng    schedule 30.11.2012
comment
В моем случае библиотека находилась в /Library/PostgreSQL/9.3/lib. Чтобы решить проблему, я запустил export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib:$DYLD_LIBRARY_PATH - person Pablo Marambio; 09.11.2013
comment
@PabloMarambio, ваше решение также сработало для меня. Спасибо - person Usama Ahmed; 14.05.2014
comment
наоборот для меня..! sudo ln -s /usr/lib/libpq.5.dylib /usr/lib/libpq.5.6.dylib - person Ammar Akhtar; 28.01.2015

В отличие от @Pablo Marambio, я исправил эту проблему, добавив следующую строку в ~/.profile:

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib:$DYLD_LIBRARY_PATH

Для Postgres.app v9.3.5.0 (предположительно и для других) я добавил вместо этого следующую строку:

export DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/Versions/9.3/lib:$DYLD_LIBRARY_PATH

Тогда, конечно же, запустите source ~/.profile

person metasequoia    schedule 25.09.2014
comment
Мне нравится эта переменная среды экспорта больше, чем копирование или символическая ссылка библиотек в моей системе. - person Sam Texas; 25.12.2014
comment
Это прерывает запуск psql DBNAME в командной строке для меня. Запуск Postgres.app v9.5.0.0 и возвращенная ошибка говорит: dyld: символ не найден: __cg_jpeg_resync_to_restart - person Raymond26; 07.06.2016

Чтобы решить эту проблему, мне пришлось удалить postgresql, а затем снова установить.

$ brew uninstall postgresql

$ brew update

$ brew install postgres
person SuperNova    schedule 10.03.2020
comment
Это решение тоже было почти моим, но кроме того, поскольку я использую определенную версию postgresql, мне также понадобился brew link:$ brew uninstall postgresql@11 && brew update && brew install postgresql@11 && brew link --force postgresql@11 - person PierrOz; 10.02.2021