RVM查找系统gems的可执行文件

时间:2011-06-17 01:08:43

标签: ruby-on-rails ruby rubygems rvm apt-get

我已经安装了RVM以及ruby版本。但是,如果我启动控制台并运行命令rails服务器,捆绑安装等,我收到此错误

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

但如果我先运行rvm use 1.9.2,那么一切都还可以。我尝试使用`rvm use --default 1.9.2',但没有改变。这是否意味着它使用与RVM中不同的ruby?提前谢谢!

3 个答案:

答案 0 :(得分:17)

ruby​​gems bin文件夹和PATH的说明

喔。您没有在rvm ruby​​中安装rails,但是您在系统ruby中进行了安装。

单个gem(如rails)可以有一个bin目录,其中包含可执行的帮助程序脚本。您的系统默认rubygems正在将系统/ usr / bin / dir中的符号链接添加到gem的bin文件夹中,以获取这些帮助程序可执行文件。

RVM提供了类似的功能,除了代替污染系统/ usr / bin目录外,它只是将 ~/.rvm/gems/#{rvm_gemset_string}/bin文件夹附加到PATH环境变量。


将系统Rubygems列表导入新的rvm rubies'gem目录

默认情况下,RVM不会将您的系统ruby安装中的gem导入到rvm ruby​​安装中。它使整个红宝石系统完全干净,包括rubygems(宝石'rubygems')和rubygems'宝石列表。当你rvm install 1.9.2时,你就像用红宝石一样全新安装了一切。

如果您想将之前使用的所有系统红宝石宝石都放入首选的rvm ruby​​中,请尝试以下操作:

  rvm use system
  rvm gemset export system.gems
  rvm use 1.9.2
  rvm gemset import system.gems
  #You'll now have all your system gems reinstalled to your new ruby version

来自@Telemachus的原始答案/编辑

尝试将源自rvm的行移动到~/.bash_profile~/.bashrc的末尾(无论您使用哪一行):

'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function'

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file ...
|                 |                 ^--------------------------------\
^ Bash, not rvm;  ^/usr/bin/rails, not ~/.rvm/gems/*/bin/rails;      |
                       Some ruby leftover from a previous install in the os

你在/usr/bin中安装了rails,这可能在你的bash echo $PATH变量中的rvm ruby​​ bin路径之前,所以它找到了系统rails install(/ usr / bin / rails,一个ruby)脚本)从这样开始:

#! /usr/bin/ruby18

你必须让冲突停止发生,最好的方法是确保RVM的bin目录位于PATH的开头。在安装rvm时添加到#Load rvm environment的{​​{1}}脚本中会发生这种情况。如果您将rvm安装为系统库而不仅仅是为您的用户安装,则会有所不同。

如果你遇到这种情况,请问@Telemachus。

然后你需要确保你已经在你的新rvm ruby​​中安装了rails gem。

验收测试:

您会发现,当您完成~/.bash_profile后,rvm use 1.9.2会返回which ruby之类的内容,而~/.rvm/rubies/1.9.2/bin/ruby会返回which rails之类的内容

答案 1 :(得分:4)

我刚刚在 Windows Vista上解决了同样的问题。

我的控制台给了我这条消息:

$ rails -v
sh: /c/RailsInstaller/Ruby1.9.2/bin/rails: C:/Projects/railsinstaller/Stage/Ruby1.9.2  /bin/ruby.exe: bad interpreter: No such file or directory

我刚刚编辑了这个文件的第一行:

C:\RailsInstaller\Ruby1.9.2\bin\rails

并指出我系统上ruby.exe的正确位置,如下所示:

#!C:\RailsInstaller\Ruby1.9.2\bin\ruby.exe

Etvoilà,问题解决了!

答案 2 :(得分:0)

您需要运行rvm use --default 1.9.2,而不仅仅是rvm use --default