如何使用rvm将ruby 1.9.2-p0升级到最新的补丁程序级别?


116

我当前的ruby版本是,ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]但我想使用rvm将其更新到最新的补丁程序级别。我怎样才能做到这一点?

Answers:


163

首先,通过运行更新RVM安装rvm get stable

为了确保您正在运行新的RVM版本,则需要运行rvm reload(或只是打开一个新的终端)。

完成后,您可以通过运行让RVM列出可安装的红宝石版本rvm list known

在输出中,您现在应该看到:

# MRI Rubies
...
[ruby-]1.9.2[-p320]
...

修补程序级别周围的方括号指示这是当前RVM对于ruby 1.9.2的默认修补程序级别。

最后,要安装新的ruby版本,只需运行rvm install 1.9.2-等待它编译!


29
对于那些正在出错的人:rvm更新已被删除。rvm get latest/ rvm get head是现在升级rvm的正确方法。
jibiel 2011年

98

升级ruby解释器保留现有的宝石集:

$ rvm upgrade 1.9.2-p0 1.9.2
Are you sure you wish to upgrade from ruby-1.9.2-p0 to ruby-1.9.2-p136? (Y/n): Y

用1.9.2的最新稳定版本替代。这样可以避免混乱。

感谢评论(@ Mauro,@ James,@ ACB),一些其他有用的提示

$ rvm list known
# NOTE: you probably want to upgrade your rvm first, as the list of known rubies seems to be coupled to the rvm version.
$ rvm get stable
$ rvm list known #pick your ruby

3
另外,您可以rvm list known查看可以升级到的可用红宝石版本。
詹姆斯·谢瓦利尔

编辑@Mauro Nidola建议“将$ rvm升级1.9.2 1.9.2-p0更改为$ rvm升级1.9.2-p0 1.9.2”
iDev 2013年

我看不到他的评论@ACB,我会更改,您的代表告诉我,我不必再次检查。我还与詹姆斯评论updateding
OMA

@oma,我来自不同的技术。因此,您可能需要仔细检查。那是某人建议的修改,被拒绝为无效编辑。检查此stackoverflow.com/review/suggested-edits/1365082。理想情况下,他应该发表评论,而不是我代表他发表评论。
iDev

34

第一次更新RVM:

rvm get stable

然后更新您的Ruby版本:

rvm upgrade 2.0.0

为所有问题选择是:

Are you sure you wish to upgrade from ruby-2.0.0-p195 to ruby-2.0.0-p247? (Y/n): Y
Are you sure you wish to MOVE gems from ruby-2.0.0-p195 to ruby-2.0.0-p247?
This will overwrite existing gems in ruby-2.0.0-p247 and remove them from ruby-2.0.0-p195 (Y/n): Y
Do you wish to move over aliases? (Y/n): Y
Do you wish to move over wrappers? (Y/n): Y
Do you also wish to completely remove ruby-2.0.0-p195 (inc. archive)? (Y/n): Y

如果您希望将gem更新到最新版本,则可以执行以下操作:

rvm all do gem update

编辑:我今天只是针对最新版本的ruby 2.0.0(我从ruby-2.0.0-p195更新到ruby-2.0.0-p353)进行了此操作。此后,当我尝试更新gem时,出现了分段错误。发生这种情况是因为宝石是为ruby-2.0.0-p195安装的,其中一些与p353不兼容。

现在,您可以尝试查找不兼容的gem,但是最简单的解决方案是删除所有已安装的gem,然后再次安装它们。我只是删除gems/ruby-2.0.0-p353了位于中的目录/usr/local/rvm。它可能适合您。

然后我跑了gem install bundler,为每个我的Rails应用程序做了bundle install


16

像这样:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136

3
我喜欢这个答案。我觉得升级ruby版本失败了使用rvm的目的。在p0旁边安装一个单独的版本,然后将较新(或任何一个)版本声明为默认版本似乎很不错。
塔斯(Tass)

2
出于安全原因,有时有时需要升级到最新的补丁程序-例如在特定的Ruby版本中发现漏洞时。
Asad R.

2

您可以按照其Wiki中的页面安装任何补丁程序级别。

另外,每个红宝石都是独立的,因此您并不是真正的“升级和保留宝石”,而是安装新的补丁程序版本,然后在该新的红宝石环境中安装宝石。

这可能是宝石开始发挥作用的原因,但是我不使用它们。

别忘了也更新rvm,以防万一。


2

npad的答案肯定列出了基础知识,因此我不会重复这些步骤,但是这里有一些建议使用的答案rvm upgrade。我知道rvm可以为您提供选择,但这有点危险。

IMO,更安全,更“ rvm的方式”是首先rvm install使用新的红宝石版本,然后使用rvm gemset copy命令将您的gemset复制到新的红宝石版本,例如rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset。然后,您可以轻松地将项目切换为使用新复制的gemset(我建议使用.rvmrc项目目录中的文件),然后查看代码是否失败。如果确实如此,则改回旧的红宝石版本仅是切换宝石集的问题。

但是,即使您不使用gemsets(尽管我假设您也这样做,因为您已经在这个问题上标记了rails),但是使用rvm upgrade可能会导致意外失败。而且,如果您的代码中断了,现在您必须再次重新安装旧版本。请多花一些时间,然后以一种干净的方式进行操作。


1

我猜它 rvm install 1.9.2-head

您可以通过以下方式查看可用的红宝石 rvm list known


head获得最新的补丁程序级别?我以为它是最新版本,这意味着它可能是不稳定的和实验性的。
Lan

阿哈,是的。我混合了最新和补丁程序级别。
Heikki

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.