ruby on rails - Biblioteca no cargada:/usr/local/opt/readline/lib/libreadline.7.dylib
ruby-on-rails (6)
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 elgreadlink
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+.
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.
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.
Reinstalar mi versión de Ruby parece haberlo arreglado:
rvm reinstall 2.3.7
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 .
el error parece
/usr/local/opt/readline/lib/libreadline.7.dylib
al buscar
/usr/local/opt/readline/lib/libreadline.7.dylib
.
¿Has intentado vincular eso?
Así que algo como:
cd /usr/local/opt/readline/lib
ln -s libreadline.8.0.dylib libreadline.7.dylib
Solo probé eso en macOS Mojave, ruby 2.5.3p105 y Rails 5.2.2 y funcionó.