首页 > 解决方案 > IRB 未加载库 libreadline

问题描述

试图进入irb但突然开始收到此错误。尝试重新安装 brew readline 并重新链接,但没有运气。有什么建议么?

/Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': dlopen(/Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
  Referenced from: /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle
  Reason: image not found - /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/x86_64-darwin17/readline.bundle
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb/ext/save-history.rb:12:in `<top (required)>'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb/extend-command.rb:243:in `save_history='
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb/context.rb:92:in `initialize'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb.rb:412:in `new'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb.rb:412:in `initialize'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb.rb:383:in `new'
    from /Users/asahmed/.rbenv/versions/2.4.2/lib/ruby/2.4.0/irb.rb:383:in `start'
    from /Users/asahmed/.rbenv/versions/2.4.2/bin/irb:11:in `<main>'

标签: rubyreadlineirb

解决方案


您可能已经升级了一些替换readline库的东西,现在需要重新构建您的 Ruby。当你运行Homebrew时,这种事情很少发生brew clean,它会删除一个过时的依赖版本,而没有意识到你的 Ruby 构建依赖它。这是因为 Rbenv 无法与 Homebrew 沟通它仍然需要那个库。

这通常很容易解决。尝试:

rbenv install 2.4.2

您可能还想花时间更新到最新版本,即今天的 2.5.3。


推荐阅读