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?

hbejgel
la source
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

dafunkeemonkee
la source
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.

Stephen
la source
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
anvy zhang
la source
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
Troy
la source
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.

sindhu_sp
la source
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
Jon
la source
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
Alex Palcuie
la source
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
Eugeny Maksimov
la source
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
8

Aucune de ces solutions n'a fonctionné pour moi; J'ai dû courir:

brew upgrade bash

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

Anthony Dahanne
la source
dans mon el capitan après la mise à niveau vers 10.11.6 a obtenu cette erreur aussi chaque fois que l'application de terminal ouverte, déjà résolue en mettant à niveau bash
azul
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.

Mark Pruce
la source
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.

Micah Bales
la source
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.

zegomesjf
la source
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.

Yuanqi Cao
la source
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
Priince Abalogu
la source
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

finx
la source
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

ph4n70m
la source
2

Les commandes suivantes ont fonctionné pour moi:

brew reinstall postgresql
brew postgresql-upgrade-database
nilansh bansal
la source
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.

Hustlion
la source
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
sp89
la source
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.

user9869932
la source
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.

Erik Trautman
la source