web-dev-qa-db-fra.com

Impossible d'exécuter la commande psql, la même erreur persiste

Je viens d'installer postgresql avec homebrew et quand je passe à taper la commande

psql

Je reçois 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

Est-ce que quelqu'un a une idée de ce qui ne va pas?

141
hbejgel

Je recevais 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

233
dafunkeemonkee

Le problème clé est que votre postgresql essayait de trouver le libreadline.6.2.dylib mais que votre readline est la version 7.0, de sorte que 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, en particulier lorsque vous avez déjà des données de base de données.

Ce que je fais est de changer de version de readline. Lorsque vous cochez brew info readline, vous trouverez différentes versions, la mienne est 6.3.8; je passe donc à 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

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

Homebrew ne fournit pas un moyen d'installer l'ancienne formule de version. Et depuis la version 2.0.0, il exécutera brew cleanup comme comportement par défaut tous les 30 jours. Par conséquent, vous pouvez accidentellement mettre à jour brew et supprimer l'ancienne version.

Voici les étapes pour installer l'ancienne version:

  1. Accédez au répertoire homebrew-core:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core`
  1. Vérifiez le hash pour l'ancienne formule:
    $ git log master -- Formula/readline.rb
  1. Trouver la version correspondante de la valeur de hachage
    commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
    Author: BrewTestBot <[email protected]>
    Date:   Wed Aug 15 21:51:16 2018 +0000

        readline: update 7.0.5 bottle.
  1. Passer à 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 la formule.

86
Stephen

Si la situation est que vous avez une version plus haute readline dire 7.0. Tu peux le faire

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

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

brew install readline

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

brew reinstall readline
45
Troy

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 de readline a été mise à jour et psql s'est bien déroulée.

21
sindhu_sp

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

brew remove readline
brew install readline
brew link readline --force
18
Alex Palcuie

cela a fonctionné pour moi 

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

Aucune de ces solutions n'a fonctionné pour moi; Je devais courir:

brew upgrade bash

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

8
Anthony Dahanne

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

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

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

6
Mark Pruce

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

4
Yuanqi Cao

J'avais ce problème, et la clé pour moi était reinstall à la fois readline et postgres. Une fois postgres réinstallé, le problème était résolu.

4
Micah Bales

Une autre façon de réparer psql est de mettre à jour postgresql en exécutant brew upgrade postgresql puisque la version la plus récente utilise readline 7 

3
zegomesjf

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

Ouvrez le Finder et appuyez sur commande + décalage + 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 n'importe lequel d'entre eux, quelle que soit la bibliothèque 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
3
Priince Abalogu

Cela m’avait aidé: Désinstaller tout readline et postgresql

export CPPFLAGS = -I/usr/local/opt/readline/include export LDFLAGS = -L/usr/local/opt/readline/lib

et installer posqtgresql

2
ph4n70m

J'ai trouvé cette solution utile 

brew upgrade bash

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

1
Tornike

J'ai essayé toutes les réponses de prévisualisations, et rien n'a fonctionné. La seule chose qui a vraiment fonctionné pour moi a été:

brew link postgresql

1
finx

Il me semble que le problème concerne le paquet de mise à jour 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.

a travaillé pour moi:

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

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

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

Enlever 

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

de ~/.zshrc l'a résolu.

0
xyz

Vous pouvez essayer brew doctor et voir ce qu'il dit.

Tout ce dont vous avez besoin est probablement brew link --overwrite bash.

En ce qui me concerne, je viens de mettre à niveau une bière car OS X EL Capitan disposait d’une mise à niveau de sécurité qui affetcs mon dossier /usr. Lors de la mise à niveau de la bière, le lien bash est rompu et c'est ce que brew doctor me dit.

Donc, je lance juste brew link --overwrite bash et tout va bien.

0
Hustlion

Vous voudrez peut-être vérifier si vous avez un lien symbolique vers postgresql. J'avais précédemment lié le paquet postgres93 , qui, à compter du 17 mai, n'était pas pris en charge et a été supprimé. Supprimer ce lien puis relier a fonctionné pour moi: 

brew unlink postgresql93
brew link postgresql
0
sp89