最近尝试安装 Ruby 2.0.0-rc1,结果被 OpenSSL 折腾的要死……
系统环境: 系统:MacOS 10.8.2 Mountain Lion 编译环境:Xcode CommandTools 4.6 xcode46cltools_10_86938131a.dmg
安装方式:
rvm get head
brew install openssl
rvm reinstall 2.0.0 --with-openssl-dir=`brew --prefix openssl`
后来又尝试用 RVM 的 pkg:
rvm pkg install openssl
rvm reinstall 2.0.0 --with-openssl-dir=$HOME/.rvm/usr
但是执行 bundle 都会返回 OpenSSL 错误:
https://gist.github.com/4704589
我 Google 了很久,但是看的 OpenSSL 报错都不是这个错误。
而且我现在 rvm use system
也坏掉了:
─(⚡refactory/test_for_git_server)─( ̄▽ ̄)~*>rvm use system
Now using system ruby.
─(⚡refactory/test_for_git_server)─( ̄▽ ̄)~*>which ruby
/Users/ranmocy/.rvm/rubies/ruby-2.0.0-rc1/bin/ruby
rbenv 的安装版本也有问题:
https://gist.github.com/4704619
但是我系统级的自己编译的 2.0.0-rc1 没有任何问题。
如果可以我还是希望能使用 RVM,脚本化切版本太方便了。
现在这个情况真是太绝望了……Any help?
Updated: 最新版本的 RVM 正常安装,看 #24 楼 。 其他暂时没有测试。
不知道 rvm 从哪个版本开始就需要用 apple-gcc42 这玩意编译才行不然压根安装不上 ruby
如果是 ssl 的问题,我昨天是这样解决的(参照 这个帖子)
#to download the cert
wget http://curl.haxx.se/ca/cacert.pem
#to let curl use it for the next calls
export CURL_CA_BUNDLE=~/cacert.pem
或者
echo insecure > ~/.curlrc
SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed`
而我的是:
SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (OpenSSL::SSL::SSLError)
没有提到 certificate 问题。
要不我再试试 gcc 吧……实在不想装两套编译环境……奇怪,为啥 rvm 就失败,手动就没问题?
@ranmocy 看了一下你的 gist, 错误信息是不支持 inline asm, 但是 rvm 是用 no-asm 去配置 openssl 的应该不会碰到,而且我修改 rvm 开启 asm 安装 openssl 也没出现问题...
如果换了编译器,把 ~/.rvm/src/ruby-2.0.0-rc1 删掉再 reinstall
@ranmocy 好吧那个 make 报 inline asm 错误归根原因是 openssl configure 就出错了,真正原因在 /Users/ranmocy/.rvm/log/ruby-2.0.0-rc1/openssl/configure.log 里
@ranmocy 从日志里看出 openssl configure 出错的直接原因应该就是你在命令行指定的 --with-openssl-dir
参数传递到了 openssl configure 那一步里... 难道是 reinstall 不支持 install 的参数...?
this is what i did:
rvm pkg install openssl rvm reinstall 2.0.0 --with-openssl-dir=$rvm_path/usr
#18 楼 @rickypaipie 还是 rc1 的时候我测试不可以。
#19 楼 @fredwu #20 楼 @blacktulip #21 楼 @ywjno 那段时间貌似 rubygems 会自动重定向到 https。
在 RVM 下安装成功了 rc2 版本,用 homebrew 的 openssl
现在在升级 RVM 到 p0 版本,貌似 RVM 的作者已经加入 openssl 的检测修复到安装脚本中了。
@ranmocy openssl 是用 rvm 装的,还是 brew?rvm install 2.0.0 的时候,用--with-openssl-dir 参数了吗?我的 2.0.0 rvm install 2.0.0
可以装上,没问题
git clone https://github.com/rails/rails.git
cd rails
bundle
装 rails4.0 时报错
已解决:因为手欠多加了在 rvmrc 里把 rvm_configure_flags 打开了,多了几个无效参数,注释掉即可
export rvm_configure_flags="--with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr"
我也掉坑里了,暂时无解,有人遇到过么?
错误信息:
.rvm/log/openssl/configure.log
./Configure
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [sctp] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]
.rvm/log/openssl/make.log
cc -I.. -I../.. -I../modes -I../asn1 -I../evp -I../../include -O -c -o set_key.o set_key.c
set_key.c:399:17: error: unsupported inline asm: input with type 'unsigned long' matching output with type 'unsigned int'
*(k++)=ROTATE(t2,30)&0xffffffffL;
~~~~~~~^~~~~~
./des_locl.h:170:19: note: expanded from macro 'ROTATE'
: "I"(n),"0"(a) \
^
set_key.c:402:17: error: unsupported inline asm: input with type 'unsigned long' matching output with type 'unsigned int'
*(k++)=ROTATE(t2,26)&0xffffffffL;
~~~~~~~^~~~~~
./des_locl.h:170:19: note: expanded from macro 'ROTATE'
: "I"(n),"0"(a) \
^
2 errors generated.
make[2]: *** [set_key.o] Error 1
make[1]: *** [subdirs] Error 1
make: *** [build_crypto] Error 1
macos 安装 ruby2 rails4 问题解决了 https://github.com/carlhuda/bundler/issues/2318 gem install bundler --pre 是安装 1.3.0.pre.8,删除这个版本安装 1.3.0.pre.7
#29 楼 @s6520643 https://github.com/sstephenson/ruby-build/commit/527e3e35ca880eb9e693c54203ff7597b27a4d0b
搞到最后是,ruby-build 里边的一个 typo。ruby-build 官方已经 fix 这个问题。 简单的 fix 就是,不需要从新编译。 https://gist.github.com/benhoskings/5027023
rvm get head it's ok
brew install libyaml it's ok
rvm pkg install openssl
[这里最好翻墙安装,会自动通过 brew 安装一个很重要的 openssl 包:openssl-1.0.1e]
但是最后仍然会出错,rvm 仍然会去下载 openssl-1.0.1c 来编译,但这个包在我的 Mac Lion-x86_64 下面死活会出错,每次都是最后这一步无法编译通过。因此解决办法是,如果通过运行 rvm requirements 发现必要的安装包都已经安装完成后,跳过这一步,直接安装 ruby 2.0 , 同时指定 openssl 的路径为以 e 结尾的那个包:
rvm install 2.0.0 --with-openssl-dir=/usr/local/etc/openssl
[/usr/local/etc/openssl] 这个路径是我系统里面的路径,你可以直接用 rvm requirements 查看 openssl 的路径。
自此无错误安装 ruby 2.0.0 ,之后使用 gem install xxx 也不会出错。
貌似在 Mac 上,Ruby 2.0.0 需要的 openssl 版本与 Mac OS 自带的不匹配了。OpenSSL Errors and Rails – Certificate Verify Failed –