由于libreadline,rails控制台无法加载

Web*_*ube 71 ruby macos ruby-on-rails

我最近重新安装了ruby 2.1.2,因为我想安装一个gem(ruby-debug-ide)

sudo rvm reinstall 2.1.2 --disable-binary --with-gcc=gcc-4.2
Run Code Online (Sandbox Code Playgroud)

从那以后,bundle exec rails c 由于以下错误,我无法加载我的控制台:

/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
Run Code Online (Sandbox Code Playgroud)

试着brew uninstall readlinebrew install --build-from-source readline它的工作,但并没有解决我的问题.

mau*_*oto 78

今天跑过这个,解决它我做了:

brew rm -f readline

brew install readline

brew link readline --force

希望能帮助到你.

  • 对我来说,`cp /usr/local/opt/readline/lib/libreadline.dylib/usr/local/opt/readline/lib/libreadline.6.dylib`就可以了.看起来像rails 4.2.6正在寻找`libreadline.6`而不是`libreadline`.不过,我可能应该将它符号化.所以`ln -s /usr/local/opt/readline/lib/libreadline.dylib/usr/local/opt/readline/lib/libreadline.6.dylib`更合适.希望这有助于其他仍然卡住的人! (161认同)
  • 在升级到Sierra后发现`rails c`被破坏后,我发现了@ califrench的解决方案. (5认同)

Tᴀʀ*_*ᴏᴏᴅ 73

基于对所接受的答案的评论,而不是答案,这似乎是最受欢迎的解决方案.

看起来像rails 4.2.6正在寻找libreadline.6而不是libreadline.所以只需要创建一个符号链接.

ln -s /usr/local/opt/readline/lib/libreadline.dylib \
/usr/local/opt/readline/lib/libreadline.6.dylib 
Run Code Online (Sandbox Code Playgroud)

希望这能帮助那些仍然被卡住的人!

  • 谢谢,这有效!在我的情况下,只需将`... libreadline.6.dylib`更改为`... libreadline.7.dylib` (5认同)
  • 感谢您发布我的解决方案.我得到了很好的反馈意见,即将发布.我投了这票! (3认同)
  • 同样在这里我也需要libreadline.7.dylib (2认同)

paw*_*aws 51

我能够通过重新安装Ruby来解决同样的问题.在Homebrew方面,重新安装readline(甚至来自源代码)并没有帮助.

我正在使用RVM,所以我为它排序了:

rvm reinstall 2.3.1

我认为Homebrew可能最近在其他一揽子计划中引入了readline v7,我怀疑这可能是罪魁祸首.

  • 谢谢 - 修好了.对于rbenv用户,rbenv等价物是`rbenv install -f 2.3.1`. (14认同)

Mee*_*ohi 16

添加gem 'rb-readline'到我Gemfile修复这个问题给我.请参阅https://github.com/ConnorAtherton/rb-readline.


cal*_*nch 16

在对@ mauro_oto的帖子发表评论后获得了很多积极的反馈后,我想我会发布这个答案:

对我来说cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib就是诀窍.看起来像rails 4.2.6正在寻找libreadline.6而不是libreadline.不过,我可能应该将它符号化.所以ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib更合适.希望这有助于其他仍然卡住的人!


the*_*guy 9

这些都不适合我.我正在使用osx sierra.这对我有用.

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
Run Code Online (Sandbox Code Playgroud)

希望这有助于那里的人.


小智 6

我的ENV:Ruby:2.2.1,Rails:4.2.1,macOS Sierra 10.12.4;

以下命令适用于我和我的同事:

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


San*_*nty 5

这解决了我的问题:

将 libreadline.{version}.dylib 替换为您遇到错误的版本:

ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Run Code Online (Sandbox Code Playgroud)