如何使用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.