Не могу запустить команду psql, постоянно получаю ту же ошибку

140

Я только что установил 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
    Похоже, это связано с readline, но это не присутствует. Вы потом удалили readline? Как именно вы установили PostgreSQL с помощью homebrew? (Шаги, команды S).
  • 0
    Вероятно, решено с помощью stackoverflow.com/questions/42356309/…, который имеет более краткий ответ, чем большинство из приведенного ниже (вам, вероятно, не нужно переустанавливать postgres!)
Теги:
macos
homebrew
psql

20 ответов

211
Лучший ответ

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

brew reinstall postgresql

  • 4
    Этот сделал это для меня на El Capitan
  • 0
    у меня работает на sierra 10.12.1
Показать ещё 11 комментариев
71

Ключевая проблема заключается в том, что ваш 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. Сбросить репо

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

  • 1
    И я - если у вас нет других зависимостей от readline 7, то это определенно наименее разрушительный подход.
  • 0
    это сработало и для меня, спасло меня от обновления постов
Показать ещё 3 комментария
51

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

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib
  • 1
    это было единственное, что сработало для меня.
  • 4
    Мне пришлось создать ссылку с именем "libreadline.6.dylib", но это было единственное предложение, которое сработало для меня.
Показать ещё 4 комментария
43

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

brew install readline

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

brew reinstall readline
  • 6
    переустановка readline не сделала этого для меня, но удаление / установка bash сделали: brew install --build-from-source bash
  • 0
    Я обнаружил, что сначала мне пришлось удалить все версии readline (brew uninstall --force readline). После того, как я переустановил его, мне пришлось принудительно связать его с "brew link --force readline"
Показать ещё 4 комментария
18

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

brew switch readline

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

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

brew switch readline 7.0.5

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

  • 2
    Также работал для меня. PSQL пытался загрузить libreadline.7.dylib , но я использовал readline 8.0.0. Переход с 8.0.0 на 7.0.5 решил проблему. Я ожидаю, что создание символической ссылки (как это сделали другие) также будет работать, если я захочу остаться на 8.0.0. Но наличие более новой версии ссылки на более старую версию вводит в заблуждение и может вызвать другие проблемы.
  • 0
    Как вы нашли это решение? Я очень впечатлен!
Показать ещё 2 комментария
18

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

brew remove readline
brew install readline
brew link readline --force
  • 1
    Повторная ссылка помогла, большое спасибо, Алекс.
  • 1
    Переоснащение сработало, спасибо
Показать ещё 2 комментария
14

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

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
  • 0
    Это была и моя проблема. Я не использовал brew и пропустил ссылку sym после последнего обновления. Спасибо!
  • 0
    Ницца! Моя точная ошибка жаловалась на 6.2, моя команда немного отличается. Ошибка была dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib , поэтому я использовал ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib .
8

Ни один из этих решений не работал у меня; Мне пришлось бежать:

brew upgrade bash

from: https://github.com/Homebrew/homebrew-core/issues/5799

  • 0
    в моем el capitan после обновления до 10.11.6 эта ошибка тоже появлялась каждый раз, когда открывалось приложение терминала, уже решенное обновлением bash
6

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

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

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

  • 0
    не работает для меня
4

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

4

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

3

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

Открыть поиск и нажать команда + 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
  • 0
    Это сработало для меня. (У)
2

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

2

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

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

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

1

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

brew link postgresql

1

Я нашел это решение полезным

brew upgrade bash

https://github.com/Homebrew/homebrew-core/issues/5799

0

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

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

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

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

0

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

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

Удаление

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

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

0

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

brew unlink postgresql93
brew link postgresql
0

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню