Бібліотека не завантажена: /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.