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

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

63503 次浏览

我猜是 rvm install 1.9.2-head

You can see available rubies with rvm list known

您可以按照 维基百科中的页面安装任何补丁级别。

另外,每个 ruby 都是独立的,所以你并没有真正的“升级和保留 gems”,而是安装一个新的补丁版本,然后在新的 ruby 环境中安装 gems。

这可能是宝石装饰的作用,但我不使用它们。

不要忘记更新你的 Rvm,只是以防它已经过去了一段时间。

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

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

完成后,可以要求 RVM 通过运行 rvm list known列出可以安装的 Ruby 版本。

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

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

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

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

像这样:

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

升级红宝石解释器 还有保留现有宝石集:

$ 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

这篇博文应该会有所帮助: 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

Npad 的答案明确地列出了基本步骤,所以我不再重复这些步骤,但是这里有几个答案建议使用 rvm upgrade。我知道 Rvm 给了你选择,但这有点危险。

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

但是,即使您不使用 gemsets (尽管我假设您使用了,因为您在这个问题上标记了 Rail) ,使用 rvm upgrade也可能导致意外的失败。如果代码中断,现在必须重新安装旧版本。再花点时间,干净利落地完成。

First update RVM:

rvm get stable

然后更新你的 Ruby 版本:

rvm upgrade 2.0.0

Choose yes for all the questions:

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)。在那之后,当我试图更新 gems 的时候,我的内存区段错误越来越差。这是因为 gem 是为 ruby-2.0.0-p195安装的,其中一些与 p353不兼容。

Now you can go and try to find the gems that are incompatible, but the easiest solution was to remove all installed gems and install them again. I simply removed gems/ruby-2.0.0-p353 directory that was located in /usr/local/rvm. It could be somewhere else for you.

然后,我运行 gem install bundler和我的轨道应用程序我做 bundle install