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

Posted

技术标签:

【中文标题】如何使用 rvm 将我的 ruby​​ 1.9.2-p0 升级到最新的补丁级别?【英文标题】:How do I upgrade my ruby 1.9.2-p0 to the latest patch level using rvm? 【发布时间】:2011-06-02 05:43:50 【问题描述】:

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

【问题讨论】:

【参考方案1】:

第一次更新 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 时遇到了分段错误。发生这种情况是因为 gem 是为 ruby​​-2.0.0-p195 安装的,其中一些与 p353 不兼容。

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

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

【讨论】:

【参考方案2】:

首先,通过运行 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 - 并等待它编译!

【讨论】:

对于那些收到 ERROR: rvm update has been removed。rvm get latest / rvm get head 是现在升级 rvm 的正确方法。 rvm get stable 解决了我在 MacOS 上遇到的这个错误:ERROR: Calling `brew list` to only list formulae is disabled! Use `brew list --formula` instead。谢谢!【参考方案3】:

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

$ 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 的最新稳定版本。这样可以避免混乱。

感谢 cmets(@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

【讨论】:

另外,您可以rvm list known 以查看可以升级到的可用 ruby​​ 版本。 @Mauro Nidola 建议的编辑 "$ rvm upgrade 1.9.2 1.9.2-p0 应更改为 $ rvm upgrade 1.9.2-p0 1.9.2" 我看不到他的评论@ACB,我会改变的,你的代表告诉我不需要仔细检查。我也在更新 James 的评论 @oma,我来自不同的技术。所以你可能需要仔细检查一下。那是某人建议的编辑,但被拒绝为无效编辑。检查此***.com/review/suggested-edits/1365082。理想情况下,他应该发表评论,而不是我代表他发表。【参考方案4】:

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

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

但是,即使您不使用 gemsets(尽管我假设您这样做了,因为您在这个问题上标记了 rails),使用 rvm upgrade 可能会导致意外失败。如果您的代码中断,现在您必须重新安装旧版本。只需多花一点时间,以干净的方式完成即可。

【讨论】:

【参考方案5】:

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

【讨论】:

虽然理论上可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。【参考方案6】:

像这样:

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

【讨论】:

我喜欢这个答案。我觉得升级 ruby​​ 的版本有点违背使用 rvm 的目的。在 p0 旁边安装一个单独的版本,然后将较新的(或任何一个)版本声明为默认版本似乎很优雅。 出于安全原因有时需要升级到最新补丁 - 例如在特定 Ruby 版本中发现漏洞时。【参考方案7】:

您可以按照wiki 中的页面安装任何补丁级别。

此外,每个 ruby​​ 都是独立的,因此您并不是真正“升级和保留 gems”,而是安装新的补丁版本,然后在新的 ruby​​ 环境中安装 gems。

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

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

【讨论】:

【参考方案8】:

我猜是rvm install 1.9.2-head

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

【讨论】:

head 会获得最新的补丁级别吗?我认为这是最新版本,这意味着它可能是不稳定的和实验性的。 啊哈,真的。我混合了最新和补丁级别。

以上是关于如何使用 rvm 将我的 ruby​​ 1.9.2-p0 升级到最新的补丁级别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 RVM 安装 Ruby 1.9.2 时出现 Curl 证书错误

RVM 无法在 Lion 上安装 Ruby 1.9.3:libxml2.2.dylib

通过 RVM 在 Ubuntu、Ruby 1.9.2 上安装使用本机扩展的 gem 时出错

无法让 RVM 切换红宝石

rails 服务器无法在 OSX 10.6.5 上使用 rvm 和 ruby​​ 1.9.2-p0 启动 mysql2

如何配置 capistrano 以使用我的 rvm 版本的 Ruby