web-dev-qa-db-fra.com

rails la console ne se charge pas en raison de libreadline

J'ai récemment réinstallé Ruby 2.1.2 comme ça depuis que je voulais installer une gemme (Ruby-debug-ide)

Sudo rvm reinstall 2.1.2 --disable-binary --with-gcc=gcc-4.2

Depuis lors, je ne peux pas charger ma console en utilisant bundle exec Rails c en raison de l'erreur suivante:

/Users/ohad/.rvm/gems/Ruby-2.1.2@aaa/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require': dlopen(/Users/ohad/.rvm/rubies/Ruby-2.1.2/lib/Ruby/2.1.0/x86_64-darwin13.0/readline.bundle, 9): Library not loaded: @@HOMEBREW_PREFIX@@/opt/readline/lib/libreadline.6.dylib (LoadError)
  Referenced from: /Users/ohad/.rvm/rubies/Ruby-2.1.2/lib/Ruby/2.1.0/x86_64-darwin13.0/readline.bundle

A tenté brew uninstall readline et brew install --build-from-source readline qui a fonctionné mais n'a pas résolu mon problème.

70
WebQube

J'ai parcouru cela aujourd'hui, pour le résoudre, j'ai fait:

brew rm -f readline

brew install readline

brew link readline --force

J'espère que ça aide.

EDIT: J'ai récemment rencontré ce problème à nouveau (après avoir rétrogradé Ruby) depuis que j'ai écrit cela, et je préfère maintenant la solution de @ califrench dans les commentaires ci-dessous:

ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib

72
mauro_oto

Sur la base d'un commentaire sur la réponse acceptée avec plus de votes positifs que la réponse, cela semble être la solution la plus populaire.

Ressemble à Rails 4.2.6 cherchait libreadline.6 au lieu de libreadline. Il suffit donc de créer un lien symbolique.

ln -s /usr/local/opt/readline/lib/libreadline.dylib \
/usr/local/opt/readline/lib/libreadline.6.dylib 

J'espère que cela aide les autres qui sont toujours coincés!

J'ai pu résoudre le même problème en réinstallant Ruby. Du côté de Homebrew, la réinstallation de readline (même à partir de la source) n'a pas aidé.

J'utilise RVM, donc cela m'a arrangé:

rvm reinstall 2.3.1

Je pense que Homebrew a peut-être récemment ajouté Readline v7 pour un autre package, dont je soupçonne qu'il pourrait bien être le coupable.

51
paws

Après avoir reçu beaucoup de commentaires positifs sur mon commentaire sur le post de @ mauro_oto, j'ai pensé publier ceci comme réponse:

Pour moi cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib a fait l'affaire. On dirait que Rails 4.2.6 cherchait libreadline.6 au lieu de libreadline. J'aurais probablement dû le mettre en lien symbolique pour être honnête. Donc ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib est plus approprié. espérons que cela aide les autres qui sont toujours coincés!

16
califrench

Ajouter gem 'rb-readline' à mon Gemfile a résolu ce problème pour moi. Voir https://github.com/ConnorAtherton/rb-readline .

16
Meekohi

Rien de tout cela n'a fonctionné pour moi. J'utilise osx sierra. C'est ce qui a fonctionné pour moi.

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

J'espère que cela aide quelqu'un là-bas.

9
theterminalguy

Mon ENV: Ruby: 2.2.1, Rails: 4.2.1, macOS Sierra 10.12.4;

La commande ci-dessous fonctionne pour moi et mon collègue:

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

6
张艳军

Sur OSX utilisant homebrew, vous pouvez spécifier quelle version de la ligne de lecture est active. par exemple.

brew switch readline 6.3.8

(il est probablement installé dans /usr/local/Cellar/readline/)

2
BF4

Cela a résolu mon problème:

Remplacez libreadline. {Version} .dylib par la version pour laquelle vous obtenez une erreur:

ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
2
Santosh Mohanty

Je rencontrais un problème similaire mais avec des versions plus mises à jour. L'erreur que j'ai eue était:

dlopen(/Users/juanjo/.rvm/rubies/Ruby-2.5.3/lib/Ruby/2.5.0/x86_64-darwin18/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
  Referenced from: /Users/juanjo/.rvm/rubies/Ruby-2.5.3/lib/Ruby/2.5.0/x86_64-darwin18/readline.bundle
  Reason: image not found - /Users/juanjo/.rvm/rubies/Ruby-2.5.3/lib/Ruby/2.5.0/x86_64-darwin18/readline.bundle

La partie importante est Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

Regarder /usr/local/opt/readline/lib/ J'ai vu que j'avais installé libreadline.8.dylib, pas 7.

Pour résoudre mon problème, guidé par les autres réponses, j'ai dû faire ce qui suit:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib

En d'autres termes: ln -s /.../[libreadline you have] /.../[libreadline you need].

1