Die Rails-Konsole wird aufgrund von libreadline nicht geladen

73

Ich habe Ruby 2.1.2 kürzlich wie folgt neu installiert, da ich ein gem ( ruby-debug-ide) installieren wollte.

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

Seitdem kann ich meine Konsole bundle exec rails c aufgrund des folgenden Fehlers nicht mehr laden :

/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

Versucht brew uninstall readlineund brew install --build-from-source readlinewas funktioniert hat, aber mein Problem nicht gelöst.

WebQube
quelle
Mögliches Duplikat der Rails Console wird nicht
geladen

Antworten:

80

Ich bin heute darauf gestoßen, um es zu lösen:

brew rm -f readline

brew install readline

brew link readline --force

Ich hoffe es hilft.

BEARBEITEN: Ich bin kürzlich erneut auf dieses Problem gestoßen (nach dem Downgrade von Ruby), seit ich dies geschrieben habe, und ich bevorzuge jetzt die Lösung von @ califrench aus den folgenden Kommentaren:

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

mauro_oto
quelle
1
hat auch für mich gearbeitet, danke! obwohl brew doctores mir beim Ausführen sagt, dass ich die Verknüpfung aufheben soll? Ich denke, das ist es, was den Fehler verursacht hat, seltsamerweise.
ggrillone
161
Für mich cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylibhat der Trick getan. Sieht aus wie Schienen 4.2.6 gesucht libreadline.6statt libreadline. Um ehrlich zu sein, hätte ich es wahrscheinlich miteinander verknüpfen sollen. Ist ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylibalso angemessener. hoffe, das hilft anderen, die noch stecken!
Califrench
5
Ich habe festgestellt, dass die Lösung von @ califrench funktioniert, nachdem die Suche rails cnach dem Upgrade auf Sierra fehlerhaft war.
Doug Thompson
Keine Ahnung, warum dies heute Morgen plötzlich passierte, aber die Lösung von Califrench hat bei mir funktioniert, als keiner der anderen es tat ... danke!
Allen Maxwell
1
Danke @califrench, die Antwort von OP hat bei mir nicht funktioniert, der Kommentar hat funktioniert. Vielleicht möchten Sie es als Antwort posten :)
Ganesh Hegde
77

Basierend auf einem Kommentar zur akzeptierten Antwort mit mehr Up-Votes als der Antwort scheint dies die beliebteste Lösung zu sein.

Sieht aus wie Schienen 4.2.6 gesucht libreadline.6statt libreadline. Sie müssen also nur einen Symlink erstellen.

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

Hoffe das hilft anderen, die noch festsitzen!

Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ
quelle
3
Vielen Dank für die Veröffentlichung meiner Lösung. Ich habe gutes Feedback bekommen und wollte es veröffentlichen. Ich habe das hochgestimmt!
Califrench
@califrench, es ist ein Community-Wiki. Bitte bearbeite es, damit es dir gefällt. Dann wirst du auch als Mitwirkender hinzugefügt. (Es ist ein bisschen ungerecht, Ihren Namen hier nicht zu sehen!)
Tᴀʀᴇǫ Mᴀʜᴍᴏᴏᴅ
Mein Problem wurde auch gelöst! Ich benutze Rails v4.2.4. Vielen Dank!
Abundnce10
Danke Califrench und Tareq! Ich habe diese Antwort positiv bewertet und die Antworten, die in der Rangliste höher angezeigt werden, abgelehnt (aber nicht so hilfreich). Leider habe ich nicht genug Repräsentanten, um die öffentlichen Summen zu ändern. In der Hoffnung, dass zukünftige Leser ähnliche Stimmen abgeben werden.
JDenman6
5
Danke, das hat funktioniert! In meinem Fall musste nur ...libreadline.6.dylibzu...libreadline.7.dylib
Ryan Rebo
51

Ich konnte das gleiche Problem lösen, indem ich Ruby neu installierte. Auf der Homebrew-Seite hat die Neuinstallation von readline (auch von der Quelle) nicht geholfen.

Ich benutze RVM, also hat das für mich sortiert:

rvm reinstall 2.3.1

Ich denke, Homebrew hat kürzlich Readline v7 für ein anderes Paket eingezogen, von dem ich vermute, dass es der Schuldige sein könnte.

Pfoten
quelle
14
Danke - das hat es behoben. Für rbenv-Benutzer ist das rbenv-Äquivalent rbenv install -f 2.3.1.
John Y
1
Hier gilt das gleiche! Neuinstallation von 2.3.1 hat es für mich behoben.
Cabgfx
Ich treffe das Problem nicht, wenn ich im Terminal arbeite, sondern nur in RubyMine (???). Und Neuinstallation behoben (???).
Franklin Yu
Ich habe Situationen gesehen, in denen RubyMine SDK auf ein veraltetes / falsches RVM-Gemset hinweist. Am typischsten, wenn ich die globale Standardversion von Ruby aktualisiere. Ich würde vorschlagen, das SDK zu überprüfen
Pfoten
Hatte Probleme beim Ausführen von Messerbefehlen für ChefDK und dies hat das Problem behoben.
WhyAyala
17

Nachdem ich viele positive Rückmeldungen zu meinem Kommentar zu @ mauro_otos Beitrag erhalten hatte, dachte ich, ich würde dies als Antwort posten:

Für mich cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylibhat der Trick getan. Es sieht so aus, als ob Rails 4.2.6 nach libreadline.6 anstelle von libreadline gesucht hat. Um ehrlich zu sein, hätte ich es wahrscheinlich miteinander verknüpfen sollen. Ist ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylibalso angemessener. hoffe, das hilft anderen, die noch stecken!

Califrench
quelle
9

Nichts davon hat bei mir funktioniert. Ich benutze osx sierra. Das hat bei mir funktioniert.

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

Hoffe das hilft jemandem da draußen.

theterminalguy
quelle
6

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

Der folgende Befehl funktioniert für mich und meinen Kollegen:

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

张艳军
quelle
5

Dies löste mein Problem:

Ersetzen Sie libreadline. {Version} .dylib durch die Version, für die Sie eine Fehlermeldung erhalten:

ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Santosh Mohanty
quelle
Dies ist die Antwort
Dowi
2

Unter OSX mit Homebrew können Sie angeben, welche Readline-Version aktiv ist. z.B

brew switch readline 6.3.8

(Es ist wahrscheinlich installiert in /usr/local/Cellar/readline/)

BF4
quelle
2

Ich hatte ein ähnliches Problem, aber mit aktuelleren Versionen. Der Fehler, den ich hatte, war:

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

Der wichtige Teil ist Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

Beim Betrachten /usr/local/opt/readline/lib/sah ich, dass ich installiert hatte libreadline.8.dylib, nicht 7.

Um mein Problem zu lösen, musste ich, geleitet von den anderen Antworten, Folgendes tun:

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

Mit anderen Worten : ln -s /.../[libreadline you have] /.../[libreadline you need].

Juan José Ramírez
quelle