无法安装ruby 1.8.7 Mac OS X Sierra

时间:2017-03-02 16:44:00

标签: ruby macos rvm

我正在尝试(重新)在运行OS X Sierra的全新MBP上使用rvm 1.29.1安装ruby 1.8.7。我已经为了完成这项工作,我无法切换到更新的版本或任何不幸的东西。

我有一个功能安装,但在一个项目中得到一些奇怪的错误后,决定尝试完全干净的重新安装rvm(并最终自制!)(长篇故事 - 从删除不需要的空间后有一个破碎的文件结构我的主目录的名称!)。我小心地从.bashrc,.profile等删除了旧安装的所有痕迹,跟随此处的其他帖子。 2.4.0安装并运行正常。但是,在尝试安装1.8.7时:

9bxbniv1:~ Rob$ rvm install ruby-1.8.7

Warning! Requested ruby installation which requires another ruby available - installing ruby-1.8.7-p374 first.

ruby-1.8.7-p374 - #removing src/ruby-1.8.7-p374..
Checking requirements for osx.
Certificates in '/usr/local/etc/openssl@1.1/cert.pem' are already up to date.
Requirements installation successful.
Installing Ruby from source to: /Users/Rob/.rvm/rubies/ruby-1.8.7-p374, this may take a while depending on your cpu(s)...
ruby-1.8.7-p374 - #downloading ruby-1.8.7-p374, this may take a while depending on your connection...
ruby-1.8.7-p374 - #extracting ruby-1.8.7-p374 to /Users/Rob/.rvm/src/ruby-1.8.7-p374....
ruby-1.8.7-p374 - #applying patch /Users/Rob/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch.
ruby-1.8.7-p374 - #applying patch /Users/Rob/.rvm/patches/ruby/1.8.7/no_sslv2.diff.
ruby-1.8.7-p374 - #applying patch /Users/Rob/.rvm/patches/ruby/GH-488.patch.
ruby-1.8.7-p374 - #applying patch /Users/Rob/.rvm/patches/ruby/ssl_no_ec2m.patch.
ruby-1.8.7-p374 - #configuring...............................
ruby-1.8.7-p374 - #post-configuration.
ruby-1.8.7-p374 - #compiling................................
Error running '__rvm_make -j 1',
showing last 15 lines of /Users/Rob/.rvm/log/1488471654_ruby-1.8.7-p374/make.log
                            ^
openssl_missing.c:107:28: error: dereferencing pointer to incomplete type
     EVP_MD_CTX_cleanup(&ctx->o_ctx);
                            ^
openssl_missing.c:108:28: error: dereferencing pointer to incomplete type
     EVP_MD_CTX_cleanup(&ctx->md_ctx);
                            ^
In file included from /usr/include/string.h:192:0,
                 from openssl_missing.c:19:
openssl_missing.c:109:27: error: invalid application of 'sizeof' to incomplete type 'HMAC_CTX'
     memset(ctx, 0, sizeof(HMAC_CTX));
                           ^
make[1]: *** [openssl_missing.o] Error 1
make: *** [all] Error 1
+++ return 2
There has been an error while running make. Halting the installation.

To proceed rvm requires a ruby-1.8.7-p374 compatible ruby is installed.
We attempted to install it automatically but it failed with status 2.
Please install it manually (or a compatible alternative) to proceed.

我已经尝试了Getting Ruby 1.8.7 installed on Mountain Lion (10.8)中建议的一些黑客攻击,但遗憾的是没有帮助。 进一步查看日志文件时,错误从以下消息开始:

In file included from openssl_missing.c:22:0:
openssl_missing.h:79:35: error: macro "EVP_MD_CTX_create" passed 1 arguments, but takes just 0
 EVP_MD_CTX *EVP_MD_CTX_create(void);
                                   ^
In file included from /usr/local/opt/openssl@1.1/include/openssl/x509.h:23:0,
                 from /usr/local/opt/openssl@1.1/include/openssl/x509_vfy.h:17,
                 from openssl_missing.c:16:
/usr/local/opt/openssl@1.1/include/openssl/evp.h:501:51: error: expected declaration specifiers or '...' before '(' token
 # define EVP_MD_CTX_init(ctx)    EVP_MD_CTX_reset((ctx))

在此处搜索此错误的第一行返回0结果。我们将非常感谢您的建议。

4 个答案:

答案 0 :(得分:5)

我能够通过RVM使用我发现@ https://gist.github.com/davidkellis/909449e13905d8bfbd49c30d20f7fbca的rbenv代码变体来实现这一点。我已经有了xcode和openssl。

rvm install 1.8.7 --with-openssl-dir=`brew --prefix openssl`

答案 1 :(得分:4)

RVM的最新开发版应该可行:

df[df$beer_beerid == which(table(df$beer_beerid) > 10),

在升级RVM之前,我还将XCode更新到版本8.2.1,如果你升级XCode,你需要启动它并同意新的许可证,或者:

rvm get head

我不得不升级我的咖啡,然后加载以使其工作,因为它很长时间没有被触及。

我不确定你是否可以孤立地做一个。我的现在正在运转。

我训练了我的RVM,因为我让它失控了。希望我只是修剪它。现在,让传统的Rails应用程序启动并运行。

答案 2 :(得分:1)

Ruby 1.8.7已经死了,任何现代macOS都不再支持,所以你无法安装它。那个版本的Ruby在这一点上是一个历史工件,如果你确实需要运行它,你需要获得与它兼容的OS X,Linux或BSD的历史版本。

我的建议是使用Vagrant构建一个具有较旧版本的Linux或BSD的虚拟机,可用于构建Ruby 1.8.7。任何可以追溯到2010年或更早的东西都可能有用,所以Ubuntu 10.04可能是一个很好的起点。

值得注意的是Ruby Enterprise Edition是1.8.7的变体,其支持时间比MRI 1.8.7更长,因此您可以在该版本上获得更多成功。它于2012年停产。

答案 3 :(得分:0)

我最终使用时间机器恢复我的系统。但另一位同事在新机器上设置相同的问题,并找到了

rvm install ruby -v 1.8.7--autolibs=enable

很有帮助,如果其他人偶然发现了这一点。