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.


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


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!


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.


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!



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.


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


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

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/)


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].

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.