【问题标题】:Best way to update all of RVM rubies and gems after system update?系统更新后更新所有 RVM 红宝石和宝石的最佳方式?
【发布时间】:2013-02-23 03:48:36
【问题描述】:

我正在寻求一种更精简、更强大的方法来在操作系统更新后保持我的 rvm 环境完好无损。我正在使用 Mountain Lion、rvm 1.18.16 和 homebrew,它有 readline、gettext、libxml2、libxslt、qt、gtk+——通常对我来说破坏的宝石是 nokogiri 和 capybara-webkit

现在两次更新 Mountain Lion 和 XCode 后,我的原生扩展 gem 和 Ruby 都遭受了损坏,我不得不花时间让一切恢复正常。我想知道我是否遵循了在此类系统更新后更新所有 rvm 组件的最佳做法。

通常发生的情况是带有本机扩展的 gem 链接到不再可用的旧库,尤其是围绕 Mountain Lion 的 libxml 问题。以下是我在所有项目中让我的系统恢复联机所采取的基本步骤(我在 rvm 下安装了大约 8 个版本的 Ruby,所以这很乏味!)。

首先,通过 App Store 更新 Mountain Lion 和 XCode。

第二,更新自制软件:

brew update
brew upgrade

然后列出你的 rubies 并开始重新编译每个...

rvm list
rvm reinstall ruby-1.9.2-p290
rvm reinstall ruby-1.9.3-p392
...

注意:我确实尝试过:

rvm all do reinstall

但这给了我这个错误:“重新安装:找不到命令”

接下来,逐步检查每个 ruby​​ 并在 gem 上执行原始操作(这具有重新编译所有本机扩展 gem 的副作用):

rvm use ruby-1.9.3-p392
gem pristine --all

最后,转到每个项目并执行以下操作:

bundle install

我不确定最后一步是否是绝对必要的——有些项目似乎还可以,有些则不行,但运行它似乎可以解决最后剩下的问题。

肯定有更简化的方法来管理这个过程!?我只使用了 Mountain Lion 和 rvm 几个月,但在那段时间,两个系统更新已经杀死了我大部分工作的 Ruby 环境。由于我是一名顾问并且遇到了许多开发环境,我安装了很多 Ruby 版本,所以我真的很想把它归结为一个易于重复的过程。

有什么想法吗?以上可以进一步改进吗?

【问题讨论】:

  • 来自 IRC #rvm 上的 mpapis:如果您没有在 bundle 中使用 --path 或 --deployment 命令选项,那么 rvm reinstall all 也将清除每个项目的捆绑 gem 的问题。

标签: ruby rvm bundler osx-mountain-lion homebrew


【解决方案1】:

你可以这样做:

rvm reinstall all

附加--force 以跳过问题。

请注意,将完全重新安装每个 gem,包括 gem pristine,您需要注意输出,因为它会通知您未能执行 pristine 操作的 gem。

【讨论】:

  • 有趣!当您在没有任何参数的情况下运行 rvm 时,它甚至没有被列为操作。它显然也不是rvm.io/rubies/installing 页面上的记录命令(也不是我检查的其他命令)......所以这就引出了问题......它记录在哪里?
  • 是的,那是实验性功能,我错过了记录它,将尝试添加它以提供帮助
  • 感谢您对#irc 的意见。我已经为此提交了票
  • 我收到错误“未知的 ruby​​ 解释器版本(不知道如何处理):全部。”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 1970-01-01
  • 2013-01-22
相关资源
最近更新 更多