ruby on rails - Biblioteca no cargada:/usr/local/opt/readline/lib/libreadline.7.dylib




ruby-on-rails (4)

Cuando intento ejecutar la rails console me sale este error:

/Users/TuzsNewMacBook/.rvm/gems/ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
 dlopen(/Users/TuzsNewMacBook/.rvm/rubies/ruby-2.3.7/lib/ruby/2.3.0/x86_64-darwin18/readline.bundle, 9): 
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

Una búsqueda rápida me llevó a este post y he intentado algunas cosas:

brew reinstall postgresql (este es de hecho el DB para este proyecto)

y

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

(Mi versión de readline es 8)

y brew link readline --force

Pero ninguno de estos lo ha arreglado.

Recientemente guard-livereload gemas de pry-coolline , guard y guard-livereload a mi proyecto si eso hace alguna diferencia (la consola de rieles está bien cargada antes de esas) Estoy corriendo en los últimos macos.

(Actualización) Estoy usando barras de palanca como mi consola de rieles, si eso hace alguna diferencia.

¿Alguna ayuda? Gracias.


Así que he comprobado algunas respuestas aquí, pero no creo que puedan funcionar con una instalación de Van Mojave Mac. Estoy usando 10.14.4 mientras hice esto:

  • obtener homebrew de https://brew.sh

  • $ brew install coreutils : esto instala gnu coreutils pkg para mac. Queremos que el greadlink funcione porque el enlace de lectura de macOSX no es el mismo que el enlace de lectura gnu. Es extremadamente confuso pero tal es la vida en Macland.

  • $ echo 'alias readlink=greadlink' >> ~/.bash_aliases que las macs readlink carecen un poco, así que anulé el enlace de lectura existente al aliasing greadlink. (Puede hacer que todos los usuarios puedan utilizarlo con $ alias readlink=greadlink >> /etc/bashrc lo que permitirá que todos los usuarios puedan usarlo.

  • $ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib He vinculado el ya vinculado .8. archivo en lugar de '.8.0.' Archivo porque si fuera para actualizarse a .8.1. entonces mi enlace de lectura no romperá o perderá las características de la biblioteca. Estoy bastante seguro de que formatearemos nuestros mac antes de que salga 9+.


La mayoría de las veces, en aplicaciones Ruby, esto se debe a las gemas que tienen extensiones (las gemas que dicen "Crear extensiones nativas ..."), que se crean utilizando una versión específica de, en este caso, readline .

Básicamente, hay dos soluciones:

O bien, puede vincular a la versión 8 de la gema, a la versión que falta. Esto funcionará en muchos casos, pero si se rompe la compatibilidad hacia atrás, no lo hará.

O, si la gema realmente es compatible con la versión 8, puede reinstalar esa gema específica, o "prístina" ejecutando la gem pristine --all .

EDITAR : En el ámbito de su "lo que he intentado", reinstalar PostgreSQL, también es uno de los binarios, creado con una versión específica, que también puede requerir una reconstrucción, para funcionar con una biblioteca del sistema, como readline.


Sí, la mejor respuesta es reinstalar.

Puede obtener la versión fácilmente escribiendo:

ruby -v

Con rbenv , el comando es ie:

rbenv install 2.3.7

con rvm :

rvm reinstall 2.3.7

Yo recomendaría que no se vinculen manualmente las bibliotecas nativas. Aas de OS X 10.4, el estándar include library path /usr/include ya no se usa y está bloqueado por SIP (lo que dificulta el movimiento de las cosas).

Apple envía un "instalador heredado" para que puedas instalar los encabezados en la "ubicación antigua", lo que también resolverá tu camino para encontrar correctamente los encabezados instalados a través de brew .

cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg`

Vea aquí para una descripción detallada de lo que está pasando .







libreadline