【问题标题】:rails console doesn't load due to libreadline由于 libreadline,rails 控制台无法加载
【发布时间】:2014-10-24 20:06:36
【问题描述】:

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

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

从那时起,我无法使用 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

尝试了brew uninstall readlinebrew install --build-from-source readline,但没有解决我的问题。

【问题讨论】:

标签: ruby-on-rails ruby macos


【解决方案1】:

今天遇到这个问题,我解决了:

brew rm -f readline

brew install readline

brew link readline --force

希望对您有所帮助。

编辑:自从我写了这篇文章后,我最近又遇到了这个问题(在降级 Ruby 之后),我现在更喜欢下面 cmets 中的@califrench 解决方案:

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

【讨论】:

  • 也为我工作,谢谢!虽然在运行brew doctor 时它告诉我取消链接?我认为这就是导致错误首先出现的原因,奇怪..
  • 对我来说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更合适。希望这可以帮助其他仍然陷入困境的人!
  • 在升级到 Sierra 后发现 rails c 被破坏后,我发现 @califrench 的解决方案可以正常工作。
  • 不知道为什么今天早上突然开始发生这种情况,但是 califrench 的解决方案对我有用,而其他人都没有......谢谢!
  • 谢谢@califrench,OP的回答对我不起作用,评论对我有用。可能想将其发布为答案:)
【解决方案2】:

根据对已接受答案的评论,赞成票比答案多,这似乎是最受欢迎的解决方案。

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

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

希望这可以帮助其他仍然陷入困境的人!

【讨论】:

  • 感谢您发布我的解决方案。我得到了很好的反馈,正准备发布它。我对此投了赞成票!
  • @califrench,这是一个社区 wiki,请进行一些编辑以使其成为您喜欢的内容,然后您也将被添加为贡献者。 (不在这里看到你的名字有点不公平!)
  • 也解决了我的问题!我正在使用 Rails v4.2.4。谢谢!
  • 感谢 Califrench 和 Tareq!我对这个答案投了赞成票,并对排名更高的答案投了反对票(但没有帮助)。不幸的是,我没有足够的代表来更改公共总数。希望未来的读者也能投出类似的票。
  • 谢谢,这成功了!就我而言,只需将...libreadline.6.dylib 更改为...libreadline.7.dylib
【解决方案3】:

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

我正在使用 RVM,所以这对我进行了排序:

rvm reinstall 2.3.1

我认为 Homebrew 最近可能为其他一些软件包引入了 readline v7,我怀疑这很可能是罪魁祸首。

【讨论】:

  • 谢谢——修复了它。对于 rbenv 用户,等效的 rbenv 是 rbenv install -f 2.3.1
  • 这里也一样!重新安装 2.3.1 为我修复了它。
  • 我在终端工作时没有遇到这个问题,但只在RubyMine (???)。并重新安装修复它(???)。
  • 我见过 RubyMine SDK 指向过时/错误的 RVM gemset 的情况。最常见的是当我升级全局默认 Ruby 版本时。我建议检查 SDK
  • 运行 ChefDK 的刀命令时出现问题,这已解决。
【解决方案4】:

在我对@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更合适。希望这可以帮助其他仍然陷入困境的人!

【讨论】:

    【解决方案5】:

    gem 'rb-readline' 添加到我的Gemfile 为我解决了这个问题。见https://github.com/ConnorAtherton/rb-readline

    【讨论】:

      【解决方案6】:

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

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

      希望这对那里的人有所帮助。

      【讨论】:

        【解决方案7】:

        我的 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

        【讨论】:

          【解决方案8】:

          这解决了我的问题:

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

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

          【讨论】:

          • 这就是答案
          【解决方案9】:

          在使用自制软件的 OSX 上,您可以指定哪个 readline 版本处于活动状态。例如

          brew switch readline 6.3.8

          (可能安装在/usr/local/Cellar/readline/

          【讨论】:

            【解决方案10】:

            我遇到了类似的问题,但版本更新了。我遇到的错误是:

            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
            

            重要的部分是Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib

            查看/usr/local/opt/readline/lib/我看到我安装了libreadline.8.dylib,而不是7。

            为了解决我的问题,在其他答案的指导下,我必须执行以下操作:

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

            换句话说: ln -s /.../[libreadline you have] /.../[libreadline you need].

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-21
              • 2014-05-11
              • 2013-08-31
              • 2019-07-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多