由于 lireadline 的原因,Rails 控制台无法加载

我最近像这样重新安装了 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的工作,但没有解决我的问题。

20761 次浏览

今天偶然发现了这个,为了解决它,我做了:

brew rm -f readline

brew install readline

brew link readline --force

希望能有帮助。

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

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

我可以通过重新安装 Ruby 来解决同样的问题。 在 Homebrew 方面,重新安装 readline (即使是从源代码)也没有帮助。

我使用的是 RVM,所以这个为我排序:

rvm reinstall 2.3.1

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

增加 gem 'rb-readline'到我的 Gemfile为我修复了这个问题。参见 https://github.com/ConnorAtherton/rb-readline

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

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

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

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

我在@mauro _ oto 的帖子上的评论得到了很多积极的反馈,我想我应该把这个作为一个答案:

对我来说,cp /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib就起作用了。看起来 Rails4.2.6在寻找 lireadline.6而不是 lireadline。说实话,我应该把它联系起来的。所以 ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.6.dylib更合适。希望这能帮助那些仍然被困在这里的人!

My 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

所有这些对我都不管用,我用的是 osx Sierra 这个对我管用。

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

希望这能帮到别人。

在 OSX 上使用自制程序,您可以指定哪个 readline 版本是活动的。

啤酒开关读数线6.3.8

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

这解决了我的问题:

将 lireadline. { version } . dylib 替换为出现错误的版本:

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

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

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