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

ger*_*rky 8 ruby rubygems ruby-on-rails apt-get rvm

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

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但如果我先跑rvm use 1.9.2,那一切都没问题.我尝试使用`rvm use --default 1.9.2',但没有改变.这是否意味着它使用与RVM中不同的ruby?提前致谢!

Tim*_*ite 17

rubygems bin文件夹和PATH的说明

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

个别宝石,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就像用红宝石一样全新安装时.

如果您想将之前使用的所有系统ruby gems都放到首选的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
Run Code Online (Sandbox Code Playgroud)

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

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

'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function'
Run Code Online (Sandbox Code Playgroud)

.

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
Run Code Online (Sandbox Code Playgroud)

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

#! /usr/bin/ruby18

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

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

然后你需要确保你已经在你的新rvm ruby​​中安装了rails gem,如上所述.

验收测试:

你会发现,当你完成后rvm use 1.9.2,它which ruby会返回类似的东西~/.rvm/rubies/1.9.2/bin/ruby,并且which rails应该返回类似的东西~/.rvm/gems/*/bin/rails.