Biblioteca no cargada: /usr/local/opt/readline/lib/libreadline.6.2.dylib

239

Acabo de instalar posgresql con homebrew y cuando sigo escribiendo el comando

psql

Obtuve el siguiente error:

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

¿Alguien tiene alguna idea de lo que está mal?

hbejgel
fuente
1
Parece que está vinculado a readline, pero no está presente. ¿Desinstalaste readline después? ¿Cómo exactamente instaló PostgreSQL con homebrew? (Pasos, comandos).
Craig Ringer
1
Probablemente resuelto por stackoverflow.com/questions/42356309/… que tiene una respuesta más sucinta que la mayoría de las siguientes (¡probablemente no necesite reinstalar postgres!)
thclark

Respuestas:

373

Estaba recibiendo exactamente el mismo error, pero las respuestas anteriores no funcionaron para mí. Tuve que reinstalar postgresql.

brew reinstall postgresql

dafunkeemonkee
fuente
55
Este lo hizo por mí en El Capitán
Sebastian Sastre
66
Mi problema parece haber estado relacionado con la instalación de Python usando brew
guyarad
66
Tenga cuidado al hacer esto si aún no tiene la última versión de Postgres. Tendrá que reinstalar el antiguo Postgres junto con el nuevo y luego hacer unpg_upgrade
dazonic
77
Esto es muy complicado si no desea perder sus bases de datos locales. Tuve suerte con 'brew switch readline 6.3.8'
Christopher Johnson
44
Si crees que reinstalar psql es un paso radical para lo que parece un pequeño error, no estás solo. Esta respuesta: stackoverflow.com/a/41476592/839876 parece abordar el problema real que la mayoría de estas respuestas solucionan.
frandroid
127

El problema clave es que su postgresql estaba tratando de encontrar la versión libreadline.6.2.dylibpero su readlinees 7.0, por lo que solo la lib de 7 está vinculada.

No creo que actualizar postgresql sea una buena idea, no es fácil y puede causar muchos problemas, especialmente cuando ya tienes datos de la base de datos.

Lo que hago es cambiar la versión de readline. Cuando verifique brew info readline, encontrará diferentes versiones, la mía es 6.3.8, así que cambio a esa versión ejecutando:

$ brew switch readline 6.3.8

Cambiará a 6.3.8 y creará el enlace:

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

En este caso, toda la biblioteca vinculada se convierte en la versión 6, y la línea de comando funciona:

$ 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

Sin embargo, si tiene diferentes aplicaciones que utilizan la versión diferente de readline, creo que debería considerar la actualización.


Actualización: 02/06/2019

¿Qué pasa si la versión anterior no está instalada?

Homebrewno proporciona una forma de instalar la fórmula de la versión anterior. Y desde v2.0.0, se ejecutará brew cleanupcomo comportamiento predeterminado cada 30 días. Por lo tanto, puede actualizar brewy eliminar accidentalmente la versión anterior.

Estos son los pasos para instalar la versión anterior:

  1. Ir al homebrew-coredirectorio:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Verifique el hash para la fórmula anterior:
    $ git log master -- Formula/readline.rb
  1. Encuentra la versión correspondiente del valor hash
    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. Pago a la antigua fórmula:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Vuelva a instalar la fórmula:
    $ brew reinstall readline
  1. Restablecer el repositorio

Siguiendo esos pasos, puede reinstalar la versión anterior de la fórmula.

Stephen
fuente
1
Y yo, si no tiene otras dependencias en readline 7, este es definitivamente el enfoque menos disruptivo.
Dibujó
esto también funcionó para mí, me salvó de actualizar postges
Rich
También funcionó para mí ... una solución mucho más limpia que la actualización de todo el databse
sromit
¿Cuándo querría volver a cambiar a cualquier otra versión readlineinstalada? ¿Qué otras desventajas hay para hacer esto?
Kenny Evitt
Solo tengo una readline instalada, y mi pago local de readline solo contiene 8.0, y el registro no tiene confirmaciones de versiones anteriores, incluso después de recuperar todo. Parece que es imposible instalar una versión anterior de readline para mí, y actualizar postgres puede ser la única opción
Andy Ray
78

Si la situación es que tienes una versión superior de readline, di 7.0. Puedes hacerlo

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib
anvy zhang
fuente
55
Tuve que crear un enlace llamado "libreadline.6.dylib", pero esta fue la única sugerencia que funcionó para mí.
Mads Hoel
1
Esto en conjunto con brew uninstall --force gawky luego brew install gawkfue lo que me puso en funcionamiento. También podrías ser capaz debrew reinstall --force gawk
Csteele5
1
Bueno Estoy ejecutando postgres 10.6 que espera libreadline.7.dylib, pero acababa de instalar pg_topla actualización de libreadline a 8.0 y rompí psql. Usé tu truco, excepto que lo hice un enlace simbólico ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos
Excelente, gracias. Esto funcionó en MacOS Mojave sin tener que desinstalar y volver a instalar PostgreSQL (lo que habría sido un verdadero dolor).
crmpicco
46

Si no tiene readline instalado, primero instálelo:

brew install readline

Para mí, recibí este error, a pesar de que tenía readline instalado. Reinstalar readline hizo el truco:

brew reinstall readline
Troya
fuente
66
reinstalar readline no lo hizo por mí, pero la desinstalación / instalación bashsí lo hizo:brew install --build-from-source bash
whatbird
Descubrí que primero tenía que eliminar toda la versión de readline (desinstalar brew --force readline). Después de reinstalarlo, tuve que forzar el enlace con "brew link --force readline"
Wilhelm
Reinstalar bash también fue la solución para mí, pero en mi caso la línea "referenciada desde" mencionó específicamente a bash.
mbafford
Después de instalar MacOS Sierra, me encontré con este problema. Hice ambas cosas brew reinstall readline(para obtener la infusión específica de Sierra) y, mientras lo hacía brew reinstall postgresql94,. La gente decía que reinstalara bash, pero para empezar nunca tuve que hacerlo. Así que esta respuesta y la respuesta elegida funcionaron para mí.
risa_risa
brew reinstalar readline funcionó para mí después de cambiar a otras versiones (que ha funcionado en el pasado) ya no funcionó después de actualizar a psql9.6
bkunzi01
31

Esto funciono para mi

brew switch readline

Esto mostrará las versiones que ha instalado. Elige uno de ellos. Elegí 7.0.5

Entonces corrí

brew switch readline 7.0.5

La versión de readline se actualizó y psqlfuncionó sin problemas.

sindhu_sp
fuente
2
También funcionó para mí. psql estaba intentando cargar libreadline.7.dylib, pero estaba usando readline 8.0.0. Cambiar de 8.0.0 a 7.0.5 resolvió el problema. Supongo que crear un enlace simbólico (como lo han hecho otros) también funcionaría si quisiera permanecer en 8.0.0. Pero tener un enlace de versión más nueva a una versión anterior es engañoso y podría causar otros problemas.
Dennis
¿Cómo encontraste esta solución? ¡Estoy muy impresionado!
kuzdu
1
Intenté lo mismo, pero obtuve el siguiente error: readline no tiene una versión "7.0.5" en la bodega. Intenté brew install 7.0.5 readline, pero muestra el siguiente error: No hay fórmula disponible con el nombre "7.0.5". @ Dennis
Mahesh Mesta
23

esto funcionó para mí

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
Jon
fuente
Este fue mi problema también. No utilicé brew y me faltaba el enlace sym después de la última actualización. ¡Gracias!
Matt
¡Agradable! Mi error exacto se quejó de 6.2, mi comando es ligeramente diferente. El error fue dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, así que lo usé ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier
20

La solución es forzar el enlace de readline nuevamente.

brew remove readline
brew install readline
brew link readline --force
Alex Palcuie
fuente
relink no funcionó para mí, pero reinstalar postgresql funcionó.
Konstantin Tikhonov
14

Me parece que el problema se trata de actualizar el paquete readline. Postgres intentó usar /usr/local/opt/readline/lib/libreadline.7.dylib en mi caso. Así que acabo de crear un enlace simbólico a la versión existente de la biblioteca /usr/local/opt/readline/lib/libreadline.8.dylib.

trabajó para mi:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Eugeny Maksimov
fuente
Esto funcionó para mí. Estoy en psql versión 9.6.3 y readline 8.
lacostenycoder
Es cierto que esta es una forma hacky de solucionar el problema, pero me encontré con este problema después de que algunas actualizaciones no relacionadas empujaron mi versión readline de 7 a 8, y una reinstalación completa de Postgres no era algo que quisiera abordar en este momento. Esta es una solución pequeña y el riesgo de que algo impactante cambie en la línea de lectura parece pequeño, así que voy a seguir con esto por ahora y seguir adelante. Informará de nuevo si causa algún problema en el futuro.
Scott Roth
Gracias por comentar, acepto este problema. Tuve muchos problemas después de actualizar a macos catalina, así que no quería profundizar en este problema y usé el hack.
Eugeny Maksimov
8

Ninguna de esas soluciones funcionó para mí; Tuve que correr:

brew upgrade bash

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

Anthony Dahanne
fuente
en mi el capitan después de la actualización a 10.11.6 recibí este error también cada vez que abro la aplicación de terminal, ya resuelta al actualizar bash
azul
6

La respuesta anterior no funcionó para mí, así que quería publicar lo que finalmente funcionó. Basado en un hilo que encontré aquí , tuve que desinstalar readline y volver a instalarlo, pero desde la fuente.

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

Después de eso, el error psql desapareció.

Mark Pruce
fuente
5

Tuve este problema, y ​​la clave para mí fue reinstallambas readliney postgres. Una vez que se reinstaló Postgres, se resolvió el problema.

Micah Bales
fuente
5

Otra forma de arreglar psql es actualizar postgresql ya que se está ejecutando brew upgrade postgresqlya que la versión más nueva usará la versión readline 7.

zegomesjf
fuente
4

Tuve este problema cuando actualicé readline a la versión 7 por accidente. Desinstalé readline y brew me recuerda que 6.3.8 todavía está instalado. Parece que la versión 7 no funciona con PSQL en este momento.

Yuanqi Cao
fuente
4

Probé todos estos comandos de terminal y nada funcionó, así que decidí arreglarlo manualmente.

Abre el buscador y presiona comando + shift + g

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

deberías ver múltiples versiones de estos archivos

libreadline.6.dylib
libreadline.7.0.dylib

cambiar el nombre de cualquiera de ellos a la biblioteca que no esté cargada

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib
Priince Abalogu
fuente
Funciona bien para mí
mike_dz
3

Intenté todas las respuestas de vista previa, y nada funcionó. Lo único que realmente funcionó para mí fue:

brew link postgresql

finx
fuente
2

Esto me ayudó: desinstalar todo readline y postgresql

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

e instalar posqtgresql

ph4n70m
fuente
2

Los siguientes comandos me funcionaron:

brew reinstall postgresql
brew postgresql-upgrade-database
nilansh bansal
fuente
0

Podrías intentar brew doctorver qué dice.

Posiblemente todo lo que necesitas es brew link --overwrite bash.

Para mí, acabo de actualizar brew ya que OS X EL Capitan tenía alguna actualización de seguridad que afecta a mi /usrcarpeta. Durante la actualización de brew, el enlace bash está roto, y esto es lo que brew doctorme dice.

Así que solo corro brew link --overwrite bashy todo está bien.

Hustlion
fuente
0

Es posible que desee comprobar si tiene algo más vinculado a postgresql. Anteriormente me había vinculado al paquete postgres93 , que, a partir de mayo '17, no es compatible y se ha eliminado. Eliminar ese enlace y luego volver a vincular funcionó para mí:

brew unlink postgresql93
brew link postgresql
sp89
fuente
0

En mi caso, la respuesta correcta no solucionó el problema.

El problema comenzó después de ejecutar brew doctory agregar export PATH="/usr/local/bin:$PATH"a mi archivo ~ / .zshrc.

Quitando

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

de lo ~/.zshrctengo resuelto.

usuario9869932
fuente
0

Por alguna razón desconocida, cuando apareció este error para la próxima versión de Readline, mi RVM parecía incapaz de localizar el correcto sin importar cómo lo vinculé, arrojando:

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

Terminé agregando la gema rb-readlinea mi Gemfile y haciendo otra bundle instally comenzó a funcionar.

Yo ... simplemente no lo sé.

Erik Trautman
fuente