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

时间:2014-08-31 11:29:27

标签: ruby-on-rails ruby macos

我最近重新安装了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哪个有效,但没有解决我的问题。

10 个答案:

答案 0 :(得分:64)

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

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

答案 1 :(得分:64)

  

基于对所接受答案的评论而言,这些答案比答案更多,这似乎是最受欢迎的解决方案。

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

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

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

答案 2 :(得分:48)

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

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

rvm reinstall 2.3.1

我认为Homebrew最近可能会在其他一些软件包中读取readline v7,我怀疑这可能是罪魁祸首。

答案 3 :(得分:15)

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

答案 4 :(得分:14)

在对@ 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 :(得分:9)

这一切都不适合我。我正在使用osx sierra。这对我有用。

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

希望这可以帮助那些人。

答案 6 :(得分: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

答案 7 :(得分:2)

在使用自制程序的OSX上,您可以指定哪个readline版本处于活动状态。 e.g。

brew switch readline 6.3.8

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

答案 8 :(得分:2)

这解决了我的问题:

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

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

答案 9 :(得分:1)

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

payment

重要的部分是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/,而不是7。

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

libreadline.8.dylib

换句话说: ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib