Бібліотека не завантажена: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Я щойно встановив posgresql з домашньою мовою, і коли я продовжую вводити команду

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 з homebrew? (Кроки, командиS).
Крейг Рінгер

1
Ймовірно, це вирішує stackoverflow.com/questions/42356309/…, який має більш коротку відповідь, ніж більшість із наведених нижче (вам, ймовірно, не потрібно перевстановлювати
постгреси

Відповіді:


373

Я отримував абсолютно таку ж помилку, але наведені вище відповіді не працювали для мене. Мені довелося перевстановити postgresql.

brew reinstall postgresql


5
Цей зробив це для мене в Ель-Капітані
Себастьян Састре

6
Моя проблема, схоже, була пов’язана з встановленням python за допомогою brew
guyarad

6
Будьте уважні до цього, якщо ви ще не знайшли останню версію Postgres. Вам потрібно буде перевстановити старий Postgres поряд із новим, а потім зробитиpg_upgrade
dazonic

7
Це дуже важко, якщо ви не хочете втрачати свої локальні бази даних. Мені пощастило з перемиканням пивоварення 6.3.8 '
Крістофер Джонсон

4
Якщо ви думаєте, що перевстановлення psql є радикальним кроком для того, що здається маленькою помилкою, ви не самотні. Ця відповідь: stackoverflow.com/a/41476592/839876, здається, вирішує справжню проблему, яка вирішує більшість із цих відповідей.
frandroid

127

Ключова проблема полягає в тому, що ваш postgresql намагався знайти, libreadline.6.2.dylibале ваша readlineверсія - це версія 7.0, тому лише 7 балів пов'язані.

Я не думаю, що оновлення 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

У цьому випадку вся пов'язана lib стає до 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

Однак якщо у вас є різні додатки, які використовують різну версію рядка читання, я думаю, вам варто подумати про оновлення.


Оновлення: 02.02.2019

Що робити, якщо стара версія не встановлена?

Homebrewне дає способу встановити формулу старої версії. А оскільки v2.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 <brew-test-bot@googlegroups.com>
    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, то це, безумовно, найменш руйнівний підхід.
намалювали

це також працювало для мене, врятувало мене від оновлення постів
Rich

Для мене теж працювало ... набагато чистіше рішення, ніж оновлення всієї бази даних
sromit

Коли хочеться перейти назад до іншої інстальованої версії readline? Які ще є мінуси для цього?
Кенні Евітт

У мене встановлено лише одну лінію читання, і мій локальний замовлення з рядка читання містить лише 8.0, і в журналі немає жодних старих версій, навіть після отримання всього. Схоже, неможливо встановити старішу версію readline для мене, і оновлення postgres може бути єдиним варіантом
Енді Рей

78

Якщо у вас ситуація, у вас є версія для читання версії, скажімо, 7.0. Ви можете це зробити

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

5
Мені довелося створити посилання під назвою "libreadline.6.dylib", але це була єдина пропозиція, яка працювала для мене.
Mads Hoel

1
Це в поєднанні з, brew uninstall --force gawkа потім brew install gawkбуло те, що мене підняло і працює. Можливо, ви також зможете простоbrew reinstall --force gawk
Csteele5

1
Хороший. Я запускаю postgres 10.6, який очікує libreadline.7.dylib, але я тільки що встановив, pg_topякий оновив libreadline до 8.0 і зламав psql. Я використав ваш трюк, за винятком того, що зробив це посилання ln -s libreadline.8.0.dylib libreadline.7.dylib
Давос,

Відмінно, дякую. Це працювало на MacOS Mojave без необхідності видалення та перевстановлення PostgreSQL (що було б справжнім болем).
crmpicco

46

Якщо у вас немає встановленої лінії читання, спочатку встановіть її:

brew install readline

Для мене я отримував цю помилку, незважаючи на те, що мені було встановлено читання ліній. Перевстановлення readline зробило трюк:

brew reinstall readline

6
перевстановлення readline не зробило це для мене, але видалення / встановлення bashзробив:brew install --build-from-source bash
whatbird

Я виявив, що мені потрібно було спочатку видалити всю вершину readline (варити видалення - force readline). Після того як я його перевстановив, мені довелося змусити зв’язати його з "варивом посилання
Вільгельм,

Перевизначення bash теж було для мене виправленням, але в моєму випадку рядок "посилання на", згаданий bash, конкретно.
mbafford

Після встановлення MacOS Sierra я зіткнувся з цим питанням. Я зробив і те, і інше brew reinstall readline(щоб отримати пиво-специфічний для Сьєрри), і при цьому brew reinstall postgresql94,. Люди сказали перевстановити bash, але я ніколи не мав цього починати. Тож ця відповідь та обрана відповідь працювали на мене.
risa_risa

Перевстановлення для перегляду інсталяції для мене працювало після переходу на інші версії (які працювали в минулому) після оновлення до psql9.6
bkunzi01

31

Це працювало для мене

brew switch readline

Це відобразило б встановлені вами версії. Виберіть один із них. Я вибрав 7.0.5

Я тоді побігла

brew switch readline 7.0.5

Версія для читання ліній оновлювалася та psqlпрацювала плавно.


2
Також працював на мене. psql намагався завантажити libreadline.7.dylib, але я використовував readline 8.0.0. Перехід з 8.0.0 на 7.0.5 вирішив проблему. Я очікую, що створення символьної посилання (як це зробили інші) також спрацювало, якби я хотів залишитися на 8.0.0. Але наявність нової версії на старішу версію вводить в оману і може потенційно спричинити інші проблеми.
Денніс

Як ви знайшли це рішення? Я дуже вражений!
кузду

1
Я спробував те саме, але отримав таку помилку: у рядку readline немає версії "7.0.5" у льоху. Я спробував варити встановлення 7.0.5, але він показує таку помилку: Немає доступної формули з назвою "7.0.5". @ Dennis
Mahesh

23

це працювало для мене

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

Це була і моя проблема. Я не використовував пивоваріння, і після останнього оновлення бракувало посилання sym. Дякую!
Метт

Приємно! Моя точна помилка скаржилася на 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.
Тайлер Колліє

20

Рішення полягає в тому, щоб знов примусити зв’язати лінію читання.

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

relink для мене не працював, але перевстановлення postgresql спрацювало.
Костянтин Тихонов

14

Мені здається, проблема в тому, щоб оновити пакет для читання ліній. 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

Це працювало для мене. Я на psql версії 9.6.3 та readline 8.
lacostenycoder

Справді, це невдалий спосіб вирішити проблему, але я зіткнувся з цією проблемою після того, як деякі непов'язані оновлення підняли мою версію для читання з 7 до 8, і повне перевстановлення Postgres не було чимось, з чим я хотів вирішити зараз. Це невелике рішення, і ризик, що щось змінить у читальній лінії, здається невеликим, тому я зараз з цим іду і продовжую. Повідомлять про це, якщо це спричинить якісь неполадки.
Скотт Рот

Дякую за коментар, я погоджуюся з цим питанням. У мене виникло багато проблем після оновлення до macos catalina, тому я не хотів заглиблюватися в цю проблему і використав хак.
Євгеній Максимов

8

Жодне з цих рішень не працювало для мене; Мені довелося бігати:

brew upgrade bash

від: https://github.com/Homebrew/homebrew-core/isissue/5799


в моєму ель-капітані після оновлення до 10.11.6 також надходила ця помилка щоразу, коли відкривалося додаток терміналу, що вже вирішується оновленням bash
azul

6

Відповідь вище не працювала для мене, тому я хотів опублікувати те, що в кінцевому підсумку спрацювало. На основі потоку, який я знайшов тут , мені довелося видалити readline та встановити його знову, але з джерела.

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

Після цього помилка psql пішла.


5

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


5

Ще один спосіб виправити psql - це оновлення postgresql, щойно працює, brew upgrade postgresqlоскільки в новій версії буде використана версія readline 7.


4

У мене була ця проблема, коли я випадково оновив readline до версії 7. Я видалив лінійку читання і нагадує, що 6.3.8 все ще встановлений. Здається, що версія 7 наразі не працює з PSQL.


4

Я спробував усі ці термінальні команди, і нічого не вийшло, тому вирішив виправити це вручну ..

Відкрийте Finder і натисніть команду + 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

Для мене добре працює
mike_dz

3

Я спробував усі відповіді на попередній перегляд, і нічого не вийшло. Єдине, що справді працювало для мене:

brew link postgresql


2

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

експортувати CPPFLAGS = -I / usr / local / opt / readline / включати експорт LDFLAGS = -L / usr / local / opt / readline / lib

та встановіть posqtgresql




0

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

Можливо, все що вам потрібно brew link --overwrite bash.

Для мене я щойно оновив варити, оскільки OS X EL Capitan здійснив оновлення безпеки, що додає мою /usrпапку. Під час оновлення варіння посилання ламається, і саме це brew doctorмені підказує.

Тому я просто бігаю brew link --overwrite bashі все в порядку.


0

Ви можете перевірити, чи є у вас ще щось, на що посилається postgresql. Раніше я посилався на пакунок postgres93 , який станом на травень 17 року не підтримується і його видалено. Видалення цього посилання, а потім повторне посилання на мене спрацювало:

brew unlink postgresql93
brew link postgresql

0

У моєму випадку правильна відповідь не усунула проблеми.

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

Видалення

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

з ~/.zshrcвирішеного.


0

З незрозумілої причини, коли ця помилка з'явилася для наступної версії Readline, мій RVM здався не в змозі знайти потрібного, як би я не пов’язував це, кидаючи:

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

Я в кінцевому підсумку додав дорогоцінний камінь rb-readlineдо свого Gemfile і робив ще один, bundle installі він почав працювати.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.