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?


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


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.


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

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

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.


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

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

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

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


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ó.


5

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


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.


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.


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

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


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


2

Los siguientes comandos me funcionaron:

brew reinstall postgresql
brew postgresql-upgrade-database


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.


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

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.


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é.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.