更新到 Ruby 2.4.2 时出现 Gemset 错误

Gemset error when updating to Ruby 2.4.2

我正在使用 RVM 从 Ruby 2.0 更新到 2.4.2,在使用 $ rvm install ruby-2.4.2 安装期间收到以下错误消息:

Making gemset ruby-2.4.2 pristine - please wait

'command gem pristine --extensions bigdecimal --version 1.3.0 gem-wrappers --version 1.3.2 io-console --version 0.4.6 json --version 2.0.4 openssl --version 2.0.5 psych --version 2.2.2' failed, you need to fix this gems manually.
Error running '__rvm_with ruby-2.4.2 gemset_pristine',
please read /Users/myname/.rvm/log/1507820191_ruby-2.4.2/gemset.pristine-ruby-2.4.2.log

Making gemset ruby-2.4.2@global pristine - please wait

'command gem pristine --extensions bigdecimal --version 1.3.0 io-console --version 0.4.6 json --version 2.0.4 openssl --version 2.0.5 psych --version 2.2.2' failed, you need to fix this gems manually.
Error running '__rvm_with ruby-2.4.2@global gemset_pristine',
please read /Users/myname/.rvm/log/1507820191_ruby-2.4.2/gemset.pristine-ruby-2.4.2@global.log

我……不太确定这意味着什么,或者我接下来应该做什么。有什么想法吗?我是 运行 macOS 10.12.6.

[编辑]:Here's a copy 错误日志。

根据 RVM 文档,您不要在命令中使用 ruby-。
它应该是: $ rvm install 2.4.2
我不确定这是否重要。 您是否尝试过升级 RVM 和 Homebrew?

[编辑] 根据日志文件中的信息:

bigdecimal-1.3.0 +gemset_pristine:20> gem pristine --extensions bigdecimal --version 1.3.0
ERROR:  Loading command: pristine (LoadError)
    cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass
+gemset_pristine:21> _failed+=( 'bigdecimal --version 1.3.0' )  

看起来像是 zlib 问题。尝试安装(或重新安装)命令行工具。
$ xcode-select --install

github https://github.com/rvm/rvm/issues/4090 上有一个非常相似的问题 运行$ brew doctor

解决了

找到了此 RVM GitHub issue 中引用的修复程序,其中涉及使用 brew 安装 zlib,然后在指向该 zlib 目录时重新安装 ruby。 正如该线程中有人指出的那样,这不是必需的。仍然不确定为什么会出现问题。

步骤

$ brew install zlib
$ rvm remove 2.4.2
$ rvm install 2.4.2 —-with-zlib-dir=/usr/local/Cellar/zlib/1.2.11       

一段时间后需要使用 SASS 才遇到这个问题。在此期间,我升级到 El Capitan。所以 Ruby 是 'Old'.

您可以通过 运行以下内容(对最新的 Ruby 版本有一点先验知识)来减少我的很多步骤。

xcode-select --install brew install zlib rvm reinstall ruby-<latest_version> --with-zlib-dir=/usr/local/Cellar/zlib/<latest_version>


这就是我必须要做的。最后倒是不用卸载了,但是我走错了很多弯路。

最初我不得不运行这一行来更新xcode:

xcode-select --install

然后安装zlib

brew install zlib

记下 zlib 的安装目录

/usr/local/Cellar/zlib/1.2.11

下次更新rvm

\curl -sSL https://get.rvm.io | bash -s 稳定 --ruby

按照这些步骤,我到达了 运行 最新版本 ruby 2.4.1 的地步。但是 zlib 没有链接到 ruby.

所以最后一步是 运行 重新安装

rvm reinstall ruby-2.4.1 --with-zlib-dir=/usr/local/Cellar/zlib/1.2.11