【问题标题】:RVM installed by Ruby not working?Ruby 安装的 RVM 不工作?
【发布时间】:2011-06-22 03:24:38
【问题描述】:

我使用 RVM 网站上提到的单一指令(使用 git)安装了 RVM。

然后我安装了 Ruby 版本 1.9.2 和 1.8.7,使用:

rvm install 1.9.2
rvm install 1.8.7

但是,我找不到 Ruby 二进制文件。当我尝试执行命令时,出现以下错误:

[root@server1 support]# rvm use 1.9.2
Using /usr/local/rvm/gems/ruby-1.9.2-p136

[root@server1 support]# ruby
-bash: ruby: command not found

这是rvm info的输出:

[root@server1 support]# rvm info

system:

  system:
    uname:       "Linux server1.myserver.com 2.6.18-194.26.1.el5.028stab070.14 #1 SMP Thu Nov 18 16:34:01 MSK 2010 x86_64 x86_64 x86_64 GNU/Linux"
    bash:        "/bin/bash => GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)"
    zsh:         " => not installed"

  rvm:
    version:      "rvm 1.2.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  homes:
    gem:          "not set"
    ruby:         "not set"

  binaries:
    ruby:         ""
    irb:          ""
    gem:          ""
    rake:         ""

  environment:
    PATH:         "/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/rvm/bin"
    GEM_HOME:     ""
    GEM_PATH:     ""
    MY_RUBY_HOME: ""
    IRBRC:        ""
    RUBYOPT:      ""
    gemset:       ""


[root@server1 support]#

【问题讨论】:

  • 请在命令行输入rvm info,并通过编辑将其输出添加到您的问题中。
  • 您打算以 root 身份在系统范围内安装 RVM,还是单用户安装?如果是单用户安装,则不应以 root 身份运行。

标签: ruby-on-rails ruby rvm


【解决方案1】:

RVM 需要在您的 ~/.bashrc~/.bash_profile 中添加少量内容,以便在您登录时对其进行初始化。它在Post Install 部分的安装文档中指定。你这样做了吗?


根据您的rvm info 输出,您似乎还没有完成安装。输出中的所有条目都应具有相应的值。所以,我怀疑你没有添加:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.

到您的~/.bashrc~/.bash_profile,然后开始一个新会话。

如果您正在执行“多用户”安装,那么您需要做的更多。您是否修改了 /etc/profile,或者,如果您使用 Bash 作为您的 shell,您是否修改了 /etc/bash.bashrc 以包括:

# 如果安装了 RVM,则加载它, # 首先尝试加载用户安装 # 然后尝试加载根安装,如果用户安装不存在。 如果 [ -s "$HOME/.rvm/scripts/rvm" ] ;然后 . "$HOME/.rvm/scripts/rvm" elif [ -s "/usr/local/rvm/scripts/rvm" ] ;然后 . “/usr/local/rvm/脚本/rvm” 菲

并启动了一个新的外壳?

我个人不像单用户安装那样喜欢多用户安装,也不推荐它,但你的里程可能会有所不同。


仅供参考:去年在 IRC 上与 RVM 维护人员讨论时,他们告诉我他们不推荐系统范围的安装,而是推荐本地“单用户”安装,即使对于服务器也是如此。

【讨论】:

  • 那么,如何卸载我已经安装的 RVM?所以我可以进行用户安装?
  • 只需删除目录并从~/.bashrc~/.bash_profile 中删除相关行,然后重新启动终端会话。 RVM 文档中很好地涵盖了所有内容。试试rvm help 并阅读implode
  • 我的 ~/.bash_profile 的内容正是您所说的应该添加的行。仍然每次我打开 shell 时,rvm 信息都会返回与问题中相同的输出,并且 ruby​​ 命令不起作用。我进行了单用户安装。还有什么问题?
  • 你也可以使用source $HOME/.rvm/scripts/rvm
  • 您知道您不必要求其他人修复链接,您可以通过提交编辑自己来完成。这就是Stack Overflow 的美妙之处。
【解决方案2】:

我在 Ubuntu 11.10 虚拟机上安装了 Ruby on Rails,使用“HOW TO INSTALL RUBY ON RAILS IN UBUNTU 11.10”。

安装后,我遇到了同样的问题。在我看来,本教程中似乎唯一缺少的是以下命令:

rvm --default use 1.9.2

虽然 Ruby 已正确安装,但 RVM 似乎在每个会话中重新定义了要使用 Ruby。问题是默认的 Ruby 指向“system ruby​​”,而在我的例子中,这个指向无处并使得调用 rvm info 返回类似于初始帖子的结果。

要解决此问题,必须使用以下命令之一:

rvm  --default use 1.9.x

或(仅对当前会话有效)

rvm use 1.9.x

在我启动服务器之前,我还遇到了“ExecJS and could not find a JavaScript runtime”。正如几个答案中所建议的那样,我 通过将以下行添加到 Gemfile 来解决它。

gem 'execjs'

gem 'therubyracer'

然后运行bundle install

【讨论】:

    【解决方案3】:

    我有类似的问题(使用 Ubuntu 13.10) 解决它

    $ source .rvm/scripts/rvm 
    

    而且长期

    $ echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
    
    $ ruby -v
    
    
    The program 'ruby' can be found in the following packages:
     * ruby1.8
     * ruby1.9.1
    Try: sudo apt-get install <selected package>
    
    $ source .rvm/scripts/rvm
    
    $ ruby -v
    
    ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
    

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题。您可能需要先登录:

      /bin/bash --login
      

      【讨论】:

        【解决方案5】:

        以下是修复 RVM 中未检测到的红宝石的方法。

        首先,我进行了健全性检查以确保它看起来很棒,然后运行

        rvm use ruby --default
        

        完成了这项工作。归结为这个命令:

        -SVE1411EGXB:~/code$ cd app1/
          -SVE1411EGXB:~/code/app1$ rails s
        The program 'rails' can be found in the following packages:
         * ruby-railties-3.2
         * ruby-railties-4.0
        Try: sudo apt-get install <selected package>
          -SVE1411EGXB:~/code/app1$ rails s
        The program 'rails' can be found in the following packages:
         * ruby-railties-3.2
         * ruby-railties-4.0
        Try: sudo apt-get install <selected package>
          -SVE1411EGXB:~/code/app1$ which ruby
          -SVE1411EGXB:~/code/app1$ which gem
          -SVE1411EGXB:~/code/app1$ rvm list
        
        rvm rubies
        
        =* ruby-2.1.2 [ x86_64 ]
        
        # => - current
        # =* - current && default
        #  * - default
        
          -SVE1411EGXB:~/code/app1$ \curl -sSL https://get.rvm.io | bash -s stable
        Downloading https://github.com/wayneeseguin/rvm/archive/stable.tar.gz
        
        Upgrading the RVM installation in /home  /.rvm/
            RVM PATH line found in /home  /.profile /home  /.bashrc /home  /.zshrc.
            RVM sourcing line found in /home  /.bashrc /home  /.bash_profile /home  /.zlogin.
        Upgrade of RVM in /home  /.rvm/ is complete.
        
        # nullsoulexception,
        #
        #   Thank you for using RVM!
        #   We sincerely hope that RVM helps to make your life easier and more enjoyable!!!
        #
        # ~Wayne, Michal & team.
        
        In case of problems: http://rvm.io/help and https://twitter.com/rvm_io
        
        Upgrade Notes:
        
          * No new notes to display.
        
          -SVE1411EGXB:~/code/app1$ rails s
        The program 'rails' can be found in the following packages:
         * ruby-railties-3.2
         * ruby-railties-4.0
        Try: sudo apt-get install <selected package>
          -SVE1411EGXB:~/code/app1$ source ~/.rvm/scripts/rvm
          -SVE1411EGXB:~/code/app1$ rvm requirements
        Checking requirements for ubuntu.
        Requirements installation successful.
          -SVE1411EGXB:~/code/app1$ rvm get stable
        Downloading https://get.rvm.io
        Downloading https://github.com/wayneeseguin/rvm/archive/stable.tar.gz
        
        Upgrading the RVM installation in /home  /.rvm/
            RVM PATH line found in /home  /.profile /home  /.bashrc /home  /.zshrc.
            RVM sourcing line found in /home  /.bashrc /home  /.bash_profile /home  /.zlogin.
        Upgrade of RVM in /home  /.rvm/ is complete.
        
        # nullsoulexception,
        #
        #   Thank you for using RVM!
        #   We sincerely hope that RVM helps to make your life easier and more enjoyable!!!
        #
        # ~Wayne, Michal & team.
        
        In case of problems: http://rvm.io/help and https://twitter.com/rvm_io
        
        Upgrade Notes:
        
          * No new notes to display.
        
        RVM reloaded!
          -SVE1411EGXB:~/code/app1$ rvm reload
        RVM reloaded!
          -SVE1411EGXB:~/code/app1$ rvm list known
        # MRI Rubies
        [ruby-]1.8.6[-p420]
        [ruby-]1.8.7[-head] # security released on head
        [ruby-]1.9.1[-p431]
        [ruby-]1.9.2[-head] # security released on head
        [ruby-]1.9.3[-p547]
        [ruby-]2.0.0-p451
        [ruby-]2.0.0[-p481]
        [ruby-]2.1.1
        [ruby-]2.1[.2]
        [ruby-]2.1-head
        ruby-head
        
        # GoRuby
        goruby
        
        # Topaz
        topaz
        
        # TheCodeShop - MRI experimental patches
        tcs
        
        # jamesgolick - All around gangster
        jamesgolick
        
        # Minimalistic ruby implementation - ISO 30170:2012
        mruby[-head]
        
        # JRuby
        jruby-1.6.8
        jruby[-1.7.12]
        jruby-head
        
        # Rubinius
        rbx-2.0.0
        rbx-2.1.1
        rbx[-2.2.7]
        rbx-head
        
        # Ruby Enterprise Edition
        ree-1.8.6
        ree[-1.8.7][-2012.02]
        
        # Kiji
        kiji
        
        # MagLev
        maglev[-head]
        maglev-1.0.0
        
        # Mac OS X Snow Leopard Or Newer
        macruby-0.10
        macruby-0.11
        macruby[-0.12]
        macruby-nightly
        macruby-head
        
        # Opal
        opal
        
        # IronRuby
        ironruby[-1.1.3]
        ironruby-head
        
          -SVE1411EGXB:~/code/app1$ ruby -v
        The program 'ruby' can be found in the following packages:
         * ruby
         * ruby1.8
        Try: sudo apt-get install <selected package>
          -SVE1411EGXB:~/code/app1$ rvm use ruby --default
        Using /home  /.rvm/gems/ruby-2.1.2
          -SVE1411EGXB:~/code/app1$ ruby -v
        ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
          -SVE1411EGXB:~/code/app1$ rails s
        => Booting WEBrick
        => Rails 4.1.1 application starting in development on http://0.0.0.0:3000
        => Run `rails server -h` for more startup options
        => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
        

        【讨论】:

        • 这可能是更准确的答案。 rvm use 2.0.0 --default 解决了我的问题。感谢您的提示,请点赞。
        【解决方案6】:

        您确定来源 /usr/local/lib/rvm 吗? echo 'source /usr/local/lib/rvm' &gt;&gt; ~/.bashrc 并通过 SSH 重新登录/启动一个新的 Bash 实例。


        澄清一下,因为存在一些混淆:安装 RVM 有两种方法:“按用户”安装和“系统范围”安装。

        对于大多数日常使用,您希望使用“按用户”安装,将 RVM 安装到 ~/.rvm。系统范围的安装适用于应该使用一组 Ruby 的服务器。在这种情况下,RVM 的默认位置是 /usr/local/rvm

        根据您的问题,您似乎已将 RVM 安装为系统范围的安装。

        要使用 RVM,必须在每次登录时通过运行脚本对其进行初始化。要轻松完成此操作,请将文件包含在 ~/.bashrc 文件中(或 ~/.bash_profile,如果您在 OS X 上),以便在您每次登录时自动运行。对于按用户安装,将以下文本添加到文件中:

        [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
        

        对于系统范围的安装,请改用此文本:

        [[ -s "/usr/local/lib/rvm" ]] && . "/usr/local/lib/rvm"
        

        如果您确实有系统范围的安装,您还需要确保您是 rvm 组的成员;输入以下内容:

        sudo adduser `whoami` rvm
        

        完成必要的更改后,请退出会话,然后重新登录。完成此操作后,rvm use 1.9.2 应该设置一组环境变量,您可以通过键入 rvm info 来查看这些变量。如果一切顺利,ruby 应该会正确执行。

        【讨论】:

        • 注意:我花了几个时间尝试获取/usr/local/bin/rvm,确保它是lib 而不是bin :)
        • 您能否澄清一下“source /usr/local/lib/rvm”的确切含义。一般来说,我是 ruby​​ 和 ror 的新手,如果您能向我解释这些术语,我会非常有帮助。
        • RVM 在/usr/local/lib/rvm 中不再存在。它现在存在于用户主目录的~/.rvm 中。您可能想使用rvm -v 检查您的版本。当前版本是 1.2.6。
        • 获取文件基本上包括该脚本的内容到调用脚本中,在这种情况下,.bashrc,每次启动 bash 时都会运行。 RVM 需要通过获取该文件来初始化。检查系统范围安装说明下方的项目符号,即“您仍然需要像在正常安装中那样编辑配置文件,但不要指向 $HOME/.rvm/scripts/rvm,而是将其指向 /usr /local/lib/rvm。” rvm.beginrescueend.com/rvm/install 的“安装后”部分有具体说明。
        • 虽然正确,但用户的问题输出为Using /usr/local/rvm/gems/ruby-1.9.2-p136,暗示系统范围的安装,而不是安装到~/.rvm。我相应地回答了。
        【解决方案7】:

        Ruby 不在你的路径中。简单来说,RVM 处理路径中 Ruby 的切换。查看命令行工具的输出

        printenv
        

        您应该会看到类似以下内容:

        PATH=/Users/myuser/.rvm/gems/jruby-1.5.6/bin
        

        看看铁皮人的回答,你应该可以去。

        【讨论】:

          【解决方案8】:

          我注意到 source 行在 .bash_profile 中是正确的,但我一直找不到 ruby​​ 命令。所以,当我检查rvm list 时,我发现没有选择任何红宝石:

          rvm list
          
          rvm rubies
          
             ruby-2.4.0 [ x86_64 ]
          
          # Default ruby not set. Try 'rvm alias create default <ruby>'.
          
          # => - current
          # =* - current && default
          #  * - default
          

          然后我通过rvm use 2.4.0进行选择并再次检查

          rvm list
          
          rvm rubies
          
          => ruby-2.4.0 [ x86_64 ]
          
          # Default ruby not set. Try 'rvm alias create default <ruby>'.
          
          # => - current
          # =* - current && default
          #  * - default
          

          看箭头关闭已安装的 ruby​​ 和注释的字幕。在那之后ruby -v终于回复了我

          ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
          

          我希望这会有所帮助。干杯。

          编辑:您可以使用 rvm --default use 2.4.0 将其设置为默认 ruby​​ 版本

          【讨论】:

          • rvm rubies 不存在了顺便说一句
          【解决方案9】:

          我将我的 shell 设置为登录 shell(打开终端 > 编辑 > 配置文件首选项 > 命令选项卡 > “将命令作为登录 shell 运行”)虽然我不是 100% 确定它是否需要。

          一旦你完成了 RVM + Ruby 的安装,你必须指定你将使用哪个 ruby​​。我喜欢用

          rvm use --latest --default

          【讨论】:

            【解决方案10】:

            rvm use 2.6.3 --default 可以修复它,但是当我关闭我的 Ubuntu 时,问题又出现了!! 这个链接对我有帮助。https://github.com/rvm/rvm/issues/3682

            1. sudo vim .bash_profile
            2. 添加以下两行:
            [[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
            
            [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session as a function    
            

            【讨论】:

              猜你喜欢
              • 2012-03-09
              • 1970-01-01
              • 2013-05-21
              • 2013-12-27
              • 2014-06-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多