Mac psql/readline - библиотека не загружена

Я работаю над Mac, Sierra 10.12.3, и я пытаюсь получить доступ к базе данных PostgreSQL с помощью команды psql, но она выбрала ошибку

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
Abort trap: 6

День или два назад, я работал с кем-то, и мне нужно было установить pip, поэтому я побежал brew install pip, и все было хорошо. Это первый раз, когда я пытаюсь запустить psql с тех пор, и я не уверен, что это имеет какое-то отношение к моей проблеме, но это кажется вероятным, поскольку я не сделал никаких других изменений.

Теперь я сделал небольшую детективную работу и обнаружил, что если бы я пошел в /usr/local/opt/, действительно был каталог readline alias, который указывал на /usr/local/Cellar/readline/7.0.1 (версия 7.0.1 также, похоже, была установлена ​​в какой-то момент - может быть, как часть пипса? Возможно, я сделал это по ошибке...), поэтому было несколько причин, по которым должна быть выбрана оригинальная ошибка. Я изменил псевдоним, указав на /usr/local/Cellar/readline/6.3.8, и ошибка слегка изменилась:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: no suitable image found.  Did find:
/usr/local/opt/readline/lib/libreadline.6.dylib: stat() failed with errno=20
Abort trap: 6

Так кажется, что я куда-то попадаю, но все еще имею проблему. Если кто-то может пролить свет на решение, я буду навсегда благодарен.

Ответ 1

Я смог решить это, просто запустив brew switch readline 6.3.8

Ответ 2

После запуска brew upgrade меня тоже была эта проблема.

Во-первых, вам нужно подтвердить версию readline на вашем Mac.

В вашей ситуации ваша старая версия readline - 6.x. После обновления ваша readline была обновлена до 7.0.1. Так что вам нужно связать свой новый readline.

Этот код может быть полезным.

$ cd /usr/local/opt/readline/lib/  # cd to readline library
$ sudo ln -s libreadline.7.dylib libreadline.6.dylib  # change the link

Я думаю, что лучший способ - это изменить ссылку readline системы, но я не знаю, как это изменить.

Ответ 3

Readline был обновлен, но вы все еще используете более старую версию psql от postgres. Обновление postgres до текущей версии, использующей текущую readline, решило проблему для меня:

brew upgrade postgres