readlineのエラーのため、「rails console」を実行できません


88

rails consoleこのエラーのために実行できません:

localhost:TwitterForZombies wiz$ rails c
/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
  Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

自作のreadlineをインストールしました。rvmの代わりにrbenvを使い続けたいです。

私の質問を読んでいただきありがとうございます。


回答:


279

最近、homebrewとlibreadline.7.x.dylib / libreadline.6.x.dylibで同じ問題が発生しました

私は実行してそれを解決しました:

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

ソース:https : //github.com/rails/rails/issues/26658


1
どのようなハック:)しかし、それは今のところうまくいきます:Dありがとう!
haslo 2016年

18
シンボリックリンクを使用してシステムをだまして、実際には異なる(メジャー!)バージョン番号を使用するようにすることは、一般に悪い考えです。上記の修正が安全である理由を、より知識のある誰かが説明できるとよいでしょう。
ピストス2016年

あなたは伝説です、ありがとう、@ wizはあなたを正しいとマークしているはずです!
Nick Schwaderer 2017

1
libreadline 6.3と7.0の間の変更の大まかなレビューでは、重大な変更であると思われるものは何も示されていません。私はそれを考慮してこの解決策を試して快適です。
Lyndsy Simon 2017

58

Homebrewは素晴らしいですが、時々他の可動部分のいくつかではうまく機能しません。

brew update && brew upgrade持ち込まlibreadline.7.x.dylib自動的に除去しながら、libreadline.6.x.dylibRubyはまだに頼りました、。

問題を修正するためのより賢明な方法があるかもしれませんが、私にはブルートフォースが機能しました:

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle

上記は、rbenvの存在を前提としています。ruby-buildもちろん、使用しているルビのバージョンにbundler置き換え2.3.1てください。

自家製の管理されたさまざまなライブラリでも同様の問題が発生する可能性があることに注意してください(たとえば、これに対する私自身の回答を参照してください


同じことが私にも起こりました— Homebrewが一部のライブラリがHomebrewが提供する一部の古いバージョンにリンクされていることに気付く方法がないのでしょうか。
slhck 2016年

2
これはEl Capitanで私にとってgem install bundlerうまくいきました。rbenvをインストールした後です。
handwovensole 2016年

brew update && brew upgradeもう一度実行するとエラーが発生しますか?
Frank Fang

1
@FrankFang、それはそうかもしれないし、そうでないかもしれません、そしてこの特定のエラーのためだけではありません。がbrew upgrade古いライブラリをより新しいバージョンに置き換えるたびに、システム内の他のプログラムが文句を言う可能性があります。
ジュゼッペ

26

OSX、ruby2.3.​​0、rails5を使用しています。追加gem 'rb-readline'私にGemfile固定し、この問題。


1
gem rb-readlineがうまくいきました。私はそれを:development、:testグループに追加しました-素早い修正!
tnum

21

Ruby 2.1.0とRails 4.0でも同じエラーが発生しました。多くを検索して試した後、最終的にはうまくいきます:)これが私がしたことです:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

他の方法:

brew update
brew uninstall readline
brew install readline

autolibsコマンドはRVMにすべての依存関係を強制的にインストールするので、心配する必要はありません。

お役に立てば幸いです。


2
必要ないかもしれませんcleanup rvm。ただreinstallルビーバージョン。
スワップ

20

Sachinがほのめかしたように、readlineをインストールしてからrubyを再インストールするのが理想的なアプローチですが、詳細はrbenvとは少し異なります。あなたのファイルパスを考えると、私はあなたがMacを使っていると思いますので、以下が役立つはずです:

brew install readline ruby-build
env CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.3-p286

これは、ruby-build Wikiと簡単なGoogle検索から取得されまし


これを行った後、
再度

2
readlineを使用して既存のRubyバージョンを再インストールした後、などのコマンドを実行すると、bundle install「拡張機能がビルドされていないため、bcrypt-3.1.11を無視します」などの多くの警告が表示されました。回答で示唆したように、この質問gem pristine --all一度にこれらのエラーをすべて修正しました。
Rory O'Kane 2016年

8

Mac、El Captainバージョンを使うだけで直せます

rvm reinstall your_ruby_version

(のようにrvm reinstall ruby-2.3.1

これがお役に立てば幸いです。


これが私がする必要があるすべてでした。
ピストス

これは、あなたの現在のバージョンを再インストールしますrvm reinstall $(rvm current)
CTS_AE

これが最も簡単な解決策ですが、再インストールには時間がかかります。それでも、最善のアプローチは私見です。
f055

1

githubユーザー@enderahmetyurtから取得(これは私のために働いた唯一のソリューションです)。

解決策:開発グループのgem 'rb-readline' Gemfileに追加して、install をバンドルします。ばかげた「readline」エラーの最も簡単な解決策です。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.