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

时间:2011-01-01 14:16:55

标签: ruby-on-rails ruby rvm

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

8 个答案:

答案 0 :(得分:159)

首先,通过运行rvm get stable来更新您的RVM安装。

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

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

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

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

补丁级别周围的方括号表示这是目前RVM的ruby 1.9.2的默认补丁级别。

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

答案 1 :(得分:93)

升级ruby解释器保留现有的gemsets:

$ 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

答案 2 :(得分:32)

首先更新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

如果您希望将宝石更新为最新版本,可以执行以下操作:

rvm all do gem update
编辑:我今天刚刚为最新版本的ruby 2.0.0做了这个(我从ruby-2.0.0-p195更新到ruby-2.0.0-p353)。之后,当我尝试更新宝石时,我遇到了分段错误。发生这种情况的原因是为ruby-2.0.0-p195安装了gem,其中一些与p353不兼容。

现在您可以尝试找到不兼容的宝石,但最简单的解决方案是删除所有已安装的宝石并重新安装它们。我只是删除了gems/ruby-2.0.0-p353中的/usr/local/rvm目录。它可能是你的其他地方。

然后我运行gem install bundler并为我的每个rails应用bundle install运行。

答案 3 :(得分:13)

像这样:

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

答案 4 :(得分:2)

您可以按照wiki

中的页面安装任何补丁级别

此外,每个ruby都是独立的,所以你不是真的'升级并保留宝石',而是安装新的补丁版本,然后在新的ruby环境中安装宝石。

这可能是宝石发挥作用,但我不使用它们。

不要忘记更新你的rvm,以防它已经有一段时间了。

答案 5 :(得分:2)

npad的答案肯定列出了基础知识,所以我不会重复这些步骤,但这里有几个答案建议使用rvm upgrade。我知道rvm为你提供了选择,但它有点危险。

IMO,更安全,更“rvm方式”是首先rvm install新的ruby版本,然后使用rvm gemset copy命令将您的gemset复制到新的ruby版本,例如: rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset。然后,您可以轻松地将项目切换为使用新复制的gemset(我建议在项目目录中使用.rvmrc文件)并查看代码是否失败。如果是这样,改回旧的ruby版本只需要切换gemset。

但即使您不使用gemsets(虽然我假设您在此问题上标记了rails),但使用rvm upgrade可能会导致意外故障。如果您的代码中断,现在您必须重新安装旧版本。花一点时间,干净利落。

答案 6 :(得分:1)

我想它是rvm install 1.9.2-head

您可以使用rvm list known

查看可用的红宝石

答案 7 :(得分:1)

这篇博文应该会有所帮助: http://pogodan.com/blog/2011/09/06/ruby-1-9-3-for-development

要领:

rvm get head
rvm reload

wget https://gist.github.com/raw/1008945/4edd1e1dcc1f0db52d4816843a9d1e6b60661122/ruby-1.9.2p290.patch
rvm install ruby-1.9.2-p290 --patch ruby-1.9.2p290.patch -n patched