Библиотека не загружена: /usr/local/opt/readline/lib/libreadline.6.2.dylib

Я только что установил posgresql с homebrew и когда я продолжаю вводить команду

psql

Я получаю следующую ошибку:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
[1]    69711 trace trap  psql

Есть ли у кого-нибудь представление о том, что неправильно?

Ответ 1

Я получал ту же ошибку, но приведенные выше ответы не сработали для меня. Мне пришлось переустановить postgresql.

brew reinstall postgresql

Ответ 2

Ключевая проблема заключается в том, что ваш postgresql пытался найти libreadline.6.2.dylib но ваша readline - версия 7.0, так что связана только 7 lib.

Я не думаю, что обновление postgresql - это хорошая идея, это не просто и может вызвать много проблем, особенно если у вас уже есть данные базы данных.

Что я делаю, так это переключаю версию readline. Когда вы проверяете brew info readline, вы найдете разные версии, моя - 6.3.8, поэтому я переключаюсь на эту версию, выполнив:

$ brew switch readline 6.3.8

Он изменится на 6.3.8 и создаст ссылку:

Cleaning /usr/local/Cellar/readline/6.3.8
Cleaning /usr/local/Cellar/readline/7.0.1
Opt link created for /usr/local/Cellar/readline/6.3.8

В этом случае вся связанная библиотека становится 6-й версией, и командная строка работает:

$ ls /usr/local/opt/readline/lib/
libhistory.6.2.dylib    libhistory.dylib    libreadline.a
libhistory.6.3.dylib    libreadline.6.2.dylib   libreadline.dylib
libhistory.6.dylib  libreadline.6.3.dylib
libhistory.a        libreadline.6.dylib

Однако, если у вас разные приложения, использующие другую версию readline, я думаю, вам стоит подумать об обновлении.


Обновление: 02/02/2019

Что если старая версия не установлена?

Homebrew не предоставляет способ установить старую формулу версии. А начиная с версии 2.0.0 он будет запускать brew cleanup качестве поведения по умолчанию каждые 30 дней. Поэтому вы можете случайно обновить brew и удалить старую версию.

Вот шаги для установки старой версии:

  1. Перейдите в каталог homebrew-core:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Проверьте хэш для старой формулы:
    $ git log master -- Formula/readline.rb
  1. Найти соответствующую версию значения хеша
    commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
    Author: BrewTestBot <[email protected]>
    Date:   Wed Aug 15 21:51:16 2018 +0000

        readline: update 7.0.5 bottle.
  1. Оформить заказ по старой формуле:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Переустановите формулу:
    $ brew reinstall readline
  1. Сбросить репо

Следуя этим шагам, вы можете переустановить старую версию формулы.

Ответ 3

Если ситуация у вас выше, читайте readline 7.0. Вы можете сделать это

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib

Ответ 4

Если у вас нет установленной линии чтения, сначала установите ее:

brew install readline

Для меня я получал эту ошибку, даже если у меня установлен readline. Повторная установка readline сделала трюк:

brew reinstall readline

Ответ 5

Это сработало для меня

brew switch readline

Это будет отображать версии, которые вы установили. Выберите один из них. Я выбрал 7.0.5

Я тогда побежал

brew switch readline 7.0.5

Версия readline была обновлена, и psql работал гладко.

Ответ 6

Решение состоит в том, чтобы снова принудительно связать линию чтения.

brew remove readline
brew install readline
brew link readline --force

Ответ 7

это сработало для меня

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

Ответ 9

Ответ выше не работал для меня, поэтому я хотел опубликовать то, что в итоге сработало. Основываясь на теме, которую я нашел здесь, мне пришлось удалить readline и установить его снова, но из исходного кода.

brew uninstall readline
brew install --build-from-source readline

После этого ошибка psql ушла.

Ответ 10

У меня была эта проблема, и ключ для меня был reinstall как readline, так и postgres. После того, как postgres был переустановлен, проблема была решена.

Ответ 11

Мне кажется, проблема в обновлении пакета readline. Postgres попытался использовать /usr/local/opt/readline/lib/libreadline.7.dylib в моем случае. Поэтому я только что создал символическую ссылку на существующую версию библиотеки /usr/local/opt/readline/lib/libreadline.8.dylib.

работал на меня:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib

Ответ 12

У меня была эта проблема, когда я обновил readline до версии 7 случайно. Я удалил readline и brew напомнил мне, что 6.3.8 все еще установлен. Кажется, что версия 7 не работает с PSQL на данный момент.

Ответ 13

Я пробовал все эти команды терминала и ничего не работал, поэтому решил исправить его вручную.

Открыть поиск и нажать команда + shift + g

Go to this folder /usr/local/opt/readline/lib/

вы должны увидеть несколько версий этих файлов

libreadline.6.dylib
libreadline.7.0.dylib

переименуйте любой из них в ту, где библиотека не загружена

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib

Ответ 14

Еще один способ исправить psql - это обновление postgresql brew upgrade postgresql, так как новая версия будет использовать версию readline 7.

Ответ 15

Это помогло мне: удалите все readline и postgresql

export CPPFLAGS = -I/usr/local/opt/readline/include экспортировать LDFLAGS = -L/usr/local/opt/readline/lib

и установите posqtgresql

Ответ 17

Я попробовал все предварительные ответы, и ничего не получилось. Единственное, что действительно сработало для меня, было:

brew link postgresql

Ответ 18

Вы можете попробовать brew doctor и посмотреть, что он говорит.

Возможно, вам нужно всего лишь brew link --overwrite bash.

Для меня я только что обновил brew, так как у OS X EL Capitan было некоторое обновление безопасности, которое обменивает мою папку /usr. Во время обновления brew ссылка bash сломана, и это то, что говорит brew doctor.

Итак, я просто запускаю brew link --overwrite bash и все в порядке.

Ответ 19

Возможно, вы захотите проверить, есть ли что-нибудь еще, связанное с postgresql. Ранее я связался с пакетом postgres93, который по состоянию на май '17 не поддерживается и был удален. Удаление этой ссылки, а затем переработка работало на меня:

brew unlink postgresql93
brew link postgresql

Ответ 20

В моем случае правильный ответ не решил проблему.

Проблема началась после запуска brew doctor и добавления export PATH="/usr/local/bin:$PATH" в мой файл ~/.zshrc.

Удаление

export PATH="/usr/local/bin:$PATH" 

из ~/.zshrc получил это решено.

Ответ 21

По какой-то неизвестной причине, когда эта ошибка появилась для следующей версии Readline, мой RVM, казалось, был не в состоянии найти нужный, независимо от того, как я его символизировал, выдавая:

Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib(LoadError)

В итоге я добавил gem rb-readline в свой Gemfile и выполнил другую bundle install и он начал работать.

Я... просто не знаю.