【问题标题】:How to change ruby version如何更改红宝石版本
【发布时间】:2014-03-28 20:59:08
【问题描述】:

Ruby 1.8 和 1.9 安装在我的 Ubuntu 机器上。我刚刚从ppa:brightbox/ruby-ng-experimental 安装了Ruby 2.0.0 来安装一个需要2.0.0 的包。现在所有 1.8、1.9 和 2.0 都已安装,但我无法告诉 bundle 使用 2.0:

$ bundle install
$ Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0

RVM 无法更改版本:

$ rvm 2.0
$ ruby-2.0.0-p451 is not installed.
$ To install do: 'rvm install ruby-2.0.0-p451'

RBENV 也不识别 2.0:

$ rbenv global 2.0.0-p451
$ rbenv: version `2.0.0-p451' not installed

【问题讨论】:

  • 您使用什么 ruby​​ 版本管理器?你试试rvm --default use 2.0.0rvm use 2.0.0
  • 你试过rvm install ruby-2.0.0吗?还提供rvm list
  • @МалъСкрылевъ 这不是一个选择。我已经从 PPA 安装了 Ruby 2.0,我想使用那个。
  • 您是否同时安装了 rbenv 和 RVM?如果是这样,请不要这样做,选择一个或另一个。两者都用会让你发疯。如果您在 rbenv 或 RVM 之外安装了 Ruby v2.0,则必须手动管理它,因为沙盒工具都不会知道 v2.0,也无法帮助您切换到它。您应该在其中一个中工作,或者将它们全部删除并手动完成,因为您很快就会让您的系统变得非常混乱。
  • 我这样做了:rvm implode

标签: ruby


【解决方案1】:

cmets 中有很多针对您的问题的建议,其中一些是高级的 rbenv 或 rvm 用法。

我的建议:决定如何管理多个 rubies - 要么使用你的操作系统包管理器(在你的情况下是 apt-get/PPA 的东西)或 rvmrbenv

对于操作系统包管理器,应该有一种方法可以显式调用带有版本的 ruby​​(例如/usr/bin/ruby1.9.3),或者研究并调用update-alternative。由于 bundler 带有 gem,您可能会在这里混淆解释器。

对于 rvm,使用 rvm use 2.5.1 更改 ruby​​ 版本(一旦安装)。

对于 rbenv 我实际上不知道,但它也应该是微不足道的(人们对此很满意;只是碰巧我先尝试了 rvm,它就像一个魅力,从未评估过 rbenv)。

我通常安装一个“系统”ruby(apt-get install ruby​​1.9.3),然后使用 rvm。您仍然可以使用 rvm use system 切换到打包的“生产”红宝石。

2017 年更新:大多数发行版都已经安装了 ruby​​ 版本,因此您可能不必手动安装它。运行 ruby -vwhich ruby 以查看是否已安装 ruby​​ 解释器。

在您的情况下,我可能会卸载所有系统 ruby​​ (apt-get purge ...),删除 PPA,删除您的 ~/.rvm 和 rbenv 并从头开始(安装打包的稳定 ruby​​,然后 rvm 并使用 rvm (rg rvm install 2.3.1) 从那里开始)。

【讨论】:

    【解决方案2】:

    添加存储库 如果您使用的是 Ubuntu 14.04 (Trusty) 或更高版本,则可以像这样添加软件包存储库:

    $ sudo apt-get install software-properties-common
    $ sudo apt-add-repository ppa:brightbox/ruby-ng
    $ sudo apt-get update
    

    安装 ruby​​ 开关

    $ sudo apt-get install ruby-switch
    

    实用命令

    ruby -v
    ruby-switch --list
    

    例子

    $ sudo ruby-switch --set ruby2.1
    

    希望对您有所帮助。

    发件人:https://www.brightbox.com/docs/ruby/ubuntu/

    【讨论】:

    • 尝试安装 ruby​​-switch 给了我这个:包 ruby​​-switch 不可用,但被另一个包引用。这可能意味着该软件包丢失、已过时或仅可从其他来源获得 E:软件包“ruby-switch”没有安装候选者
    • 可能已经过时了,我的意思是,检查存储库是否在您的 Ubuntu 版本中可用。据我所知,目前 Brightbox 没有 Ubuntu 20 的 Ruby 版本。这是我最后一次尝试,需要以另一种方式安装。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多