Cuando intento ejecutar 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 esta publicación y probé 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 solucionado.
Recientemente he añadido pry-coolline
, guard
y guard-livereload
gemas a mi proyecto, si hay alguna diferencia (rieles consola cargado pequeña antes de esos). Estoy funcionando con los últimos macos.
(Actualización) Estoy usando palancas como mi consola de rieles, si eso hace alguna diferencia.
¿Alguna ayuda? Gracias.
ruby-on-rails
libreadline
Jonathan Tuzman
fuente
fuente
brew reinstall readline
Respuestas:
el error parece arrojarse al buscar
/usr/local/opt/readline/lib/libreadline.7.dylib
.¿Has intentado vincular eso?
Entonces algo como:
Intenté eso en macOS Mojave, ruby 2.5.3p105 y Rails 5.2.2 y funcionó.
fuente
ln
no son cosas de las que realmente sepa nada: /cd /usr/local/opt/readline/lib
brew link readline --force
crear los enlaces en/usr/local/opt/readline/lib
.brew link readline --force
de Candland, que funcionó para míReinstalar mi versión de Ruby parece haberlo solucionado:
fuente
rbenv install 2.5.1
me funcionó en mi contexto. Esto sucedió de forma lateral después de haber corridosudo xcode-select -s /Library/Developer/CommandLineTools
para solucionar un problema que estaba experimentando en otro lugar. fwiwbundle install
a instalar las gemas con extensiones nativas.puedes intentar
está en el camino correcto pero parece que rails está buscando libreadline.7.dylib y libreadline.7.dylib no está en la carpeta.
fuente
Sí, la mejor respuesta es reinstalar.
Puede obtener la versión fácilmente escribiendo:
Con
rbenv
, el comando es, por ejemplo:con
rvm
:fuente
rbenv install <ruby-version>
falló con "rake" de conflictos de rake con el ejecutable instalado de redis-rack conflict. Tuve que correrrbenv uninstall <ruby-version> && rbenv install <ruby-version>
Una solución muy simple que no implica la reconstrucción de su conjunto de gemas RVM O bibliotecas de enlace simbólico.
Agregue a su Gemfile:
Si está haciendo grupos de agrupadores
Entonces corre
Avísame si eso no funciona.
fuente
La mayoría de las veces en aplicaciones Ruby, esto es causado por gemas que tienen extensiones (las gemas que dicen "Construyendo extensiones nativas ..."), que se construyen usando una versión específica de, en este caso
readline
,.Básicamente, hay dos soluciones:
O puede enlazar simbólicamente la versión 8 de la gema a la versión que falta. Esto funcionará en muchos casos, pero si se rompe la compatibilidad con versiones anteriores, no lo hará.
O, si la gema realmente es compatible con la versión 8, puede reinstalar esa gema específica o "limpiarla" ejecutándola
gem pristine --all
.EDITAR : En el alcance de su "lo que he probado", reinstalar PostgreSQL, también es uno de los binarios, construido usando una versión específica, que también puede requerir una reconstrucción, para trabajar con una biblioteca del sistema, como readline.
fuente
Tengo este problema:
haciendo...
me hizo el truco para macOS Catalina
fuente
Así que he comprobado algunas respuestas aquí, pero no creo que puedan funcionar con una instalación básica de Mac Mojave. Estoy usando 10.14.4 mientras hice estos:
obtener homebrew de https://brew.sh
$ brew install coreutils
: esto instala el paquete gnu coreutils para mac, queremos elgreadlink
de esto porque el readlink de macOSX no es el mismo que el readlink de gnu. Es extremadamente confuso, pero así es la vida en Macland.$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
Encontré que macs readlink era un poco deficiente, así que anulé el readlink existente al poner un alias en greadlink. (puede hacer que todos los usuarios$ alias readlink=greadlink >> /etc/bashrc
puedan usarlo, 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
.8.
Vinculé el archivo ya vinculado en lugar de '.8.0'. porque si se actualizara.8.1.
, mi readlink no se rompería ni perdería funciones en la biblioteca. Estoy bastante seguro de que formatearemos nuestros macs antes de que salga 9+.fuente
Recomendaría no vincular manualmente bibliotecas nativas. A partir de OS X 10.4, la ruta de la biblioteca de inclusión estándar
/usr/include
ya no se usa y está bloqueada por SIP (lo que dificulta mover cosas a).Apple envía un "instalador heredado" para que pueda instalar los encabezados en la "ubicación anterior", que también resolverá su ruta para encontrar correctamente los encabezados instalados a través de
brew
.Consulte aquí para obtener un informe detallado sobre lo que está sucediendo .
fuente
libreadline.8.dylib
con ellibreadline.7.dylib
que faltaba. es decir, ejecutar comando:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Mi problema era el mismo cuando corría
lftp
.Simplemente ejecutar
brew upgrade
ha resuelto mi problema, ya que se ha actualizado (entre otros):fuente
Antecedentes: esto sucedió cuando intenté instalar tig, pero creo que este es un problema común que puede tener y que necesita vincular manualmente el software instalado en la ruta correcta que otro software desea.
Si no puede encontrar readline instalado en su Mac, debe ejecutar
Después de instalar la fecha límite, brew le pedirá que lo vincule. Pero en realidad no se puede vincular ejecutando
Incluso tu no puedes enlazar corriendo
Mac OS le advertirá que esto es extremadamente peligroso y le impedirá hacerlo.
La última versión de readline es la versión 8, por lo que verá un mensaje de error como
La fecha límite de instalación de la cerveza en
Por lo tanto, debe vincularlo manualmente al lugar que desea su software mediante el comando ls
¡Disfrutar!
fuente