Bibliothèque non chargée: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Je viens d'installer posgresql avec homebrew et quand je vais taper la commande

psql

J'obtiens l'erreur suivante:

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

Quelqu'un at-il une idée de ce qui ne va pas?


1
On dirait qu'il est lié à readline, mais il n'est pas présent. Avez-vous désinstallé readline par la suite? Comment avez-vous installé PostgreSQL avec homebrew exactement ? (Étapes, commandes).
Craig Ringer

1
Probablement résolu par stackoverflow.com/questions/42356309/… qui a une réponse plus succincte que la plupart des réponses ci-dessous (vous n'avez probablement pas besoin de réinstaller postgres!)
thclark

Réponses:


373

J'obtenais exactement la même erreur, mais les réponses ci-dessus ne fonctionnaient pas pour moi. J'ai dû réinstaller postgresql.

brew reinstall postgresql


5
Celui-ci l'a fait pour moi sur El Capitan
Sebastian Sastre

6
Mon problème semble avoir été lié à l'installation de python à l'aide de brew
guyarad

6
Soyez prudent si vous n'êtes pas déjà sur la dernière version de Postgres. Vous devrez réinstaller l'ancien Postgres à côté du nouveau, puis faire unpg_upgrade
dazonic

7
C'est très lourd si vous ne voulez pas perdre vos bases de données locales. J'ai eu de la chance avec 'brew switch readline 6.3.8'
Christopher Johnson

4
Si vous pensez que la réinstallation de psql est une étape radicale pour ce qui semble être un petit bug, vous n'êtes pas seul. Cette réponse: stackoverflow.com/a/41476592/839876 semble résoudre le vrai problème autour de la plupart de ces réponses.
frandroid

127

Le problème clé est que votre postgresql essayait de trouver la libreadline.6.2.dylibmais votre readlineversion est 7.0, donc seule la bibliothèque de 7 est liée.

Je ne pense pas que la mise à niveau de postgresql soit une bonne idée, ce n'est pas facile et peut causer beaucoup de problèmes, surtout lorsque vous avez déjà des données de base de données.

Ce que je fais, c'est changer de version readline. Lorsque vous vérifiez brew info readline, vous trouverez différentes versions, la mienne l'est 6.3.8, donc je passe à cette version en exécutant:

$ brew switch readline 6.3.8

Il passera à 6.3.8 et créera le lien:

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

Dans ce cas, toute la bibliothèque liée devient la version 6, et la ligne de commande fonctionne:

$ 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

Cependant, si vous avez différentes applications utilisant la version différente de readline, je pense que vous devriez envisager une mise à niveau.


Mise à jour: 06/02/2019

Que faire si l'ancienne version n'est pas installée?

Homebrewne fournit pas un moyen d'installer l'ancienne formule de version. Et depuis la v2.0.0, il s'exécutera brew cleanupcomme comportements par défaut tous les 30 jours. Par conséquent, vous pouvez accidentellement mettre à jour brewet supprimer l'ancienne version.

Voici les étapes pour installer l'ancienne version:

  1. Accédez au homebrew-corerépertoire:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Vérifiez le hachage pour l'ancienne formule:
    $ git log master -- Formula/readline.rb
  1. Trouver la version correspondante de la valeur de hachage
    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. Commander à l'ancienne formule:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Réinstallez la formule:
    $ brew reinstall readline
  1. Réinitialiser le repo

En suivant ces étapes, vous pouvez réinstaller l'ancienne version de formule.


1
Et moi - si vous n'avez pas d'autres dépendances sur readline 7, c'est certainement l'approche la moins perturbatrice.
attiré le

cela a aussi fonctionné pour moi, m'a sauvé de la mise à jour des postges
Rich

Ça a aussi fonctionné pour moi ... une solution beaucoup plus propre que la mise à jour de la base de données entière
sromit

Quand voudrait-on revenir à une autre version de readlinecelle -ci qui a été installée? Quels autres inconvénients y a-t-il à faire cela?
Kenny Evitt

Je n'ai qu'une seule readline installée, et ma vérification locale de readline ne contient que 8.0, et le journal n'a pas de validations de versions plus anciennes, même après avoir tout récupéré. Il semble qu'il soit impossible d'installer une ancienne version de readline pour moi, et la mise à niveau de postgres peut être la seule option
Andy Ray

78

Si la situation est, vous avez une ligne de lecture de version supérieure, disons 7.0. Tu peux le faire

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

5
J'ai dû créer un lien nommé "libreadline.6.dylib" mais c'était la seule suggestion qui a fonctionné pour moi.
Mads Hoel

1
C'est en conjonction avec brew uninstall --force gawket puis brew install gawkc'est ce qui m'a permis d'être opérationnel. Vous pourriez également être en mesure debrew reinstall --force gawk
Csteele5

1
Bon. J'utilise postgres 10.6 qui attend libreadline.7.dylib mais je venais d'installer pg_topqui a mis à jour libreadline vers 8.0 et cassé psql. J'ai utilisé votre astuce, sauf qu'il en a fait un lien symbolique ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos

Excellent, merci. Cela a fonctionné sur MacOS Mojave sans avoir à désinstaller et réinstaller PostgreSQL (ce qui aurait été très difficile).
crmpicco

46

Si vous n'avez pas installé readline, installez-le d'abord:

brew install readline

Pour moi, j'obtenais cette erreur, même si j'avais installé readline. La réinstallation de readline a fait l'affaire:

brew reinstall readline

6
la réinstallation de readline ne l'a pas fait pour moi, mais la désinstallation / installation a bashfait:brew install --build-from-source bash
whatbird

J'ai constaté que je devais d'abord supprimer toutes les versions de readline (désinstallation de brew --force readline). Après l'avoir réinstallé, j'ai dû forcer le lien avec "brew link --force readline"
Wilhelm

La réinstallation de bash était également la solution pour moi, mais dans mon cas, la ligne "référencée à partir de" mentionnait spécifiquement bash.
mbafford

Après avoir installé MacOS Sierra, je rencontrais ce problème. J'ai fait les deux brew reinstall readline(pour obtenir le breuvage spécifique à Sierra) et pendant que j'y étais , brew reinstall postgresql94 . Les gens ont dit de réinstaller bash mais je ne l'ai jamais eu au départ. Donc, cette réponse et la réponse choisie ont toutes deux fonctionné pour moi.
risa_risa

brew restart readline a fonctionné pour moi après être passé à d'autres versions (qui a fonctionné dans le passé) ne fonctionnait plus après la mise à niveau vers psql9.6
bkunzi01

31

Cela a fonctionné pour moi

brew switch readline

Cela afficherait les versions que vous avez installées. Choisissez-en un. J'ai choisi 7.0.5

J'ai ensuite couru

brew switch readline 7.0.5

La version readline a été mise à jour et psqls'est bien déroulée.


2
A également fonctionné pour moi. psql essayait de se charger libreadline.7.dylib, mais j'utilisais readline 8.0.0. Le passage de 8.0.0 à 7.0.5 a résolu le problème. Je m'attends à ce que la création d'un lien symbolique (comme d'autres l'ont fait) fonctionnerait également, si je voulais rester sur 8.0.0. Mais avoir un lien de version plus récente vers une version plus ancienne est trompeur et pourrait potentiellement causer d'autres problèmes.
Dennis

Comment avez-vous trouvé cette solution? Je suis très impressionné!
kuzdu

1
J'ai essayé la même chose, mais j'ai eu l'erreur suivante: readline n'a pas de version "7.0.5" dans la cave. J'ai essayé la ligne de lecture de brew install 7.0.5, mais elle montre l'erreur suivante: Aucune formule disponible avec le nom "7.0.5". @ Dennis
Mahesh Mesta

23

cela a fonctionné pour moi

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

C'était aussi mon problème. Je n'ai pas utilisé d'infusion et il manquait le lien sym après la dernière mise à jour. Merci!
Matt

Agréable! Mon erreur exacte s'est plainte de 6.2, ma commande est légèrement différente. L'erreur était dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, donc j'ai utilisé ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier

20

La solution est de forcer à nouveau la liaison de readline.

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

relink n'a pas fonctionné pour moi, mais la réinstallation de postgresql a fonctionné.
Konstantin Tikhonov

14

Il me semble que le problème concerne la mise à jour du paquet readline. postgres a essayé d'utiliser /usr/local/opt/readline/lib/libreadline.7.dylib dans mon cas. Je viens donc de créer un lien symbolique vers la version existante de la bibliothèque /usr/local/opt/readline/lib/libreadline.8.dylib.

travaillé pour moi:

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

Cela a fonctionné pour moi. Je suis sur psql version 9.6.3 et readline 8.
lacostenycoder

Certes, il s'agit d'une méthode hacky pour résoudre le problème, mais je rencontrais ce problème après que certaines mises à niveau non liées aient poussé ma version en lecture de 7 à 8, et une réinstallation complète de Postgres n'était pas quelque chose que je voulais aborder maintenant. Il s'agit d'une solution à faible encombrement et le risque de changement significatif en ligne de lecture semble faible, je vais donc continuer avec cela pour le moment. Rendra compte s'il provoque des problèmes sur toute la ligne.
Scott Roth

Merci pour le commentaire, je suis d'accord sur ce problème. J'ai eu beaucoup de problèmes après la mise à jour vers macos catalina, donc je ne voulais pas creuser ce problème et utiliser le hack.
Eugeny Maksimov


6

La réponse ci-dessus n'a pas fonctionné pour moi, donc je voulais publier ce qui a finalement fonctionné. Sur la base d'un fil que j'ai trouvé ici , j'ai dû désinstaller readline et l'installer à nouveau mais à partir de la source.

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

Après cela, l'erreur psql a disparu.


5

J'ai eu ce problème, et la clé pour moi était à la reinstallfois readlineet postgres. Une fois que postgres a été réinstallé, le problème a été résolu.


5

Une autre façon de corriger psql est de mettre à jour postgresql juste en cours d'exécution brew upgrade postgresqlcar la dernière version utilisera la version readline 7.


4

J'ai eu ce problème lorsque j'ai mis à jour readline vers la version 7 par accident. J'ai désinstallé readline et brew me rappelle que 6.3.8 est toujours installé. Il semble que la version 7 ne fonctionne pas avec PSQL pour le moment.


4

J'ai essayé toutes ces commandes de terminal et rien n'a fonctionné alors j'ai décidé de le réparer manuellement ..

Ouvrez le viseur et appuyez sur commande + shift + g

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

vous devriez voir plusieurs versions de ces fichiers

libreadline.6.dylib
libreadline.7.0.dylib

renommer l'un d'eux à la bibliothèque qui n'est pas chargée

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

Fonctionne bien pour moi
mike_dz

3

J'ai essayé toutes les réponses des aperçus, et rien n'a fonctionné. La seule chose qui a vraiment fonctionné pour moi était:

brew link postgresql


2

Cela m'avait aidé: désinstaller tous les readline et postgresql

exporter CPPFLAGS = -I / usr / local / opt / readline / inclure exporter LDFLAGS = -L / usr / local / opt / readline / lib

et installez posqtgresql


2

Les commandes suivantes ont fonctionné pour moi:

brew reinstall postgresql
brew postgresql-upgrade-database


0

Tu pourrais essayer brew doctor voir ce qu'il dit.

Peut-être que tout ce dont vous avez besoin est brew link --overwrite bash .

Pour moi, je viens de mettre à niveau brew depuis OS X EL Capitan avait une mise à niveau de sécurité qui affecte mon /usrdossier. Au cours de la mise à niveau de l'infusion, le lien bash est rompu, et c'est ce quebrew doctor me dit.

Alors je cours brew link --overwrite bashet tout va bien.


0

Vous voudrez peut-être vérifier si vous avez un autre lien symbolique vers postgresql. J'avais précédemment lié au package postgres93 , qui, à partir de mai '17, n'est pas pris en charge et a été supprimé. La suppression de ce lien et la reconnexion ont fonctionné pour moi:

brew unlink postgresql93
brew link postgresql

0

Dans mon cas, la bonne réponse n'a pas résolu le problème.

Le problème a commencé après l'exécution brew doctoret l'ajout export PATH="/usr/local/bin:$PATH"à mon fichier ~ / .zshrc.

Suppression

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

de l' ~/.zshrcavoir résolu.


0

Pour une raison inconnue, lorsque cette erreur est apparue pour la prochaine version de Readline, mon RVM semblait incapable de localiser la bonne, peu importe comment je l'ai liée, en lançant:

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

J'ai fini par ajouter la gemme rb-readlineà mon Gemfile et à en faire une autre bundle installet cela a commencé à fonctionner.

Je ... ne sais tout simplement pas.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.