【问题标题】:RVM finding system gems' executablesRVM 查找系统 gem 的可执行文件
【发布时间】:2011-09-16 20:18:30
【问题描述】:

我已经安装了 RVM 和 ruby​​ 版本。但是,如果我启动控制台并运行命令 rails server、bundle install 等,我会收到此错误

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 中的红宝石不同?提前致谢!

【问题讨论】:

  • 通过编辑将rvm info 的输出添加到您的问题中。
  • rvm 不会自动安装 rails。安装特定的 Ruby 解释器后,您需要为该解释器安装所需的任何 gem(包括 rails)。问题似乎是您安装了 1.9.2 并将其设置为默认值,但从未为该解释器安装 rails

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


【解决方案1】:

我刚刚在 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

等等,问题解决了!

【讨论】:

    【解决方案2】:

    rubygems bin 文件夹及路径说明

    哦。您的 rvm ruby​​ 中没有安装 rails,但您在系统 ruby​​ 中安装了。

    rails 这样的单个gem 可以有一个bin 目录,其中包含可执行的帮助脚本。您的系统默认 ruby​​gems 正在为这些帮助程序可执行文件从系统 /usr/bin/ 目录创建符号链接到 gem 的 bin 文件夹。

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


    将系统 Rubygems 列表导入到您的新 rvm rubies 的 gem 目录中

    默认情况下,RVM 不会将系统 ruby​​ 安装中的 gem 导入到 rvm ruby​​ 安装中。它对整个 ruby​​ 系统进行了完整的分叉,包括 ruby​​gems(gem 'rubygems')和 ruby​​gems' gem 列表。当你rvm install 1.9.2 时,就像你已经对所有与 ruby​​ 一起使用的东西进行了全新安装。

    如果您想将以前使用的所有系统 ruby​​ gem 放入首选的 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 时添加到 ~/.bash_profile#Load rvm environment 脚本中。如果您将 rvm 作为系统库安装,而不仅仅是为您的用户安装,则情况会有所不同。

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

    然后,您需要确保已将 rails gem 安装在上述新 rvm ruby​​ 中。

    验收测试:

    您会发现,当您完成 rvm use 1.9.2 后,which ruby 将返回类似 ~/.rvm/rubies/1.9.2/bin/ruby 的内容,而 which rails 应该返回类似 ~/.rvm/gems/*/bin/rails 的内容。

    【讨论】:

    • 完成了 mv,并且发生了这种情况 当前未安装程序“rails”。您可以通过键入安装它: sudo apt-get install rails
    • 重命名后,我再次使用 gem install rails 安装它,它成功了,谢谢!
    • 请查看更新后的答案,展示如何将系统 gem 复制到 rvm。
    • 至于 $PATHrvm 建议您在 shell 的启动文件中很晚(最好是最后)获取它,以确保 rvm 安装的项目来 首先。这样一来,就不需要像你建议的那样把事情搞定mv。 (你真的应该删除那个建议。)
    • +1 一般来说,您应该根本不必触摸系统安装的项目来使用rvm。因此,与其重命名rails,我认为真正的答案是(1)在rvm-installed 1.9.2 下安装rails 和(2)确保您的$PATH 设置正确(即使用@ 987654350@ 项目之前操作系统项目)。
    【解决方案3】:

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

    【讨论】:

    • 我就是这么做的..但是什么都没有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    • 2015-09-16
    相关资源
    最近更新 更多