请教各位,libopenssl-ruby 怎么ruby 安装openssl,在Windows上

第三方登录:openSUSE下的Ruby安装openssl出错解决方法
投稿:junjie
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了openSUSE下的Ruby安装openssl出错解决方法, 本文方法同时适用类似错误的其它包的安装中,需要的朋友可以参考下
最近把玩 Ruby,不错的说,很有感觉;在一台老机器上面装了 openSUSE 12.3,然后使用 rvm 安装了 ruby,其实任何好的发行版打包的 ruby 都不如使用 rvm 安装的 ruby,亲身感受(不服来辩)。
然后,使用 gem 安装一些软件的时候,会出现如下的错误:
`no such file to load -- openssl (LoadError)`
原因很简单就是 ruby 的 openssl 支持模块没有安装,在 openSUSE 下面安装:
sudo zypper in libopenssl-devel
然后编译 openssl 模块,进入 ~/.rvm/src/ruby-xxx/ext/openssl:
ruby extconf.rb
make install
Ok,Done。
总结,其实很多类似的错误都可以通过上面的方式解决,比如 no readline 的错误,可以安装 readline-devel,然后进入 ~/.rvm/src/ruby-xxx/ext/readline,执行编译即可,这点很赞,cool~
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具[已解决] RVM 安装 Ruby 2.0.0 的 OpenSSL 问题 & 社区 & Ruby China
最近尝试安装 Ruby 2.0.0-rc1,结果被 OpenSSL 折腾的要死……
系统环境:
系统:MacOS 10.8.2 Mountain Lion
编译环境:Xcode CommandTools 4.6 xcode46cltools_10_a.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 错误:
我 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 的安装版本也有问题:
但是我系统级的自己编译的 2.0.0-rc1 没有任何问题。
如果可以我还是希望能使用 RVM,脚本化切版本太方便了。
现在这个情况真是太绝望了……Any help?
最新版本的 RVM 正常安装,看
其他暂时没有测试。
运行rvm requirements,按照提示把它要求的东西都给装上,然后就好使了
除了 apple-gcc42 我都装了。
之前用 1.9.3 的时候只装了编译工具都正常……
p.s. 忘了说我的环境:
系统:MacOS 10.8.2 Mountain Lion
编译环境:Xcode CommandTools xcode46cltools_10_a.dmg
不知道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 就失败,手动就没问题?
啊,原来我的 gcc 已经装了……这个编译的时候需要手动指定么?
不用 apple-gcc42, export CC=clang 即可
我昨天重装rvm的时候倒是没手动指定让rvm用哪个环境编译东西
指定 clang 了,还是同样的问题……
你是什么版本 ruby 的?
这不是按照wiki的按照教程来做的么,发现不对劲就按照rvm requirements的提示来做了
我昨天装的是1.9.3
我的 rvm requirements 只有:
# For ruby:
brew install autoconf automake apple-gcc42 libtool pkg-config openssl readline libyaml sqlite libxml2 libxslt libksba
我也都装了……
关键是那个错误太奇葩,Google 后只有一个不相关的结果……
看了一下你的 gist, 错误信息是不支持 inline asm, 但是 rvm 是用 no-asm 去配置 openssl 的应该不会碰到, 而且我修改 rvm 开启 asm 安装 openssl 也没出现问题...
如果换了编译器, 把 ~/.rvm/src/ruby-2.0.0-rc1 删掉再 reinstall
上面还有两个,一个是brew切换分支,一个是装bash、curl、git
然后curl就重新装了一个版本,不知道用了新的curl之后能不能解决你的问题
好吧那个 make 报 inline asm 错误归根原因是 openssl configure 就出错了, 真正原因在 /Users/ranmocy/.rvm/log/ruby-2.0.0-rc1/openssl/configure.log 里
从日志里看出 openssl configure 出错的直接原因应该就是你在命令行指定的 --with-openssl-dir 参数传递到了 openssl configure 那一步里... 难道是 reinstall 不支持 install 的参数...?
我把 openssl 强制覆盖系统的了,然后也不记得都折腾什么了,编译就出错了。
我报了 RVM 的 ,
然后我说是 Ruby 上游
哎,太折腾了这玩意……
你的bundle是啥版本?我rvm了ruby 2.0.0-rc2后,bundler表示版本太低,不兼容ruby 2.0
作者说稳定版有些不兼容,你要用 gem install bundler --pre。
不过我测试 dev 版可以正常使用。
this is what i did:
rvm pkg install openssl
rvm reinstall 2.0.0 --with-openssl-dir=$rvm_path/usr
最简单快速的方案—— Gemfile 里把 source 改为 'http://rubygems.org'
isn't this default?
edit: I see the problem here. Thanks.
这样就不用https协议,也就不需要openssl了吧
还是 rc1 的时候我测试不可以。
那段时间貌似 rubygems 会自动重定向到 https。
在 RVM 下安装成功了 rc2 版本,用 homebrew 的 openssl
现在在升级 RVM 到 p0 版本,貌似 RVM 的作者已经加入 openssl 的检测修复到安装脚本中了。
已经解决了吗?
RVM 默认安装方式 rvm install 2.0.0 就可以正常安装 2.0.0 p0 了。
不过 bundler 的 ca 证书问题还是要手工解决
curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/etc/openssl/cert.pem
openssl 是用rvm装的,还是brew?rvm install 2.0.0的时候,用--with-openssl-dir参数了吗? 我的2.0.0
rvm install 2.0.0 可以装上,没问题git clone /rails/rails.git
装rails4.0时报错
按照这里的方法我安装成了,在mac os x ML上:
你是ruby2.0.0装成功了,还是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
-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 问题解决了
gem install bundler --pre 是安装
1.3.0.pre.8,删除这个版本安装 1.3.0.pre.7
我是ruby2.0成功
我 Homebrew 装了的,然后直接 rvm install 2.0.0,但是我看了下我的 ~/.rvm/usr/include 里有 openssl 文件夹。
您这个状况是够坑爹的……怎么能在配置文件里放编译参数呢……
rvmrc的example文件里的参数,之前看到顺手打开了
搞到最后是,ruby-build里边的一个typo。ruby-build官方已经fix这个问题。
简单的fix就是,不需要从新编译。
rvm get head
brew install libyaml
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 自带的不匹配了.
brew link openssl --force
这个很重要
,这个副作用非常大,brew install openssl的时候提醒的很清楚。而且没有必要。
如果用rbenv, 直接就rbenv install 2.0.0-p0就好了。rbenv已经考虑到openssl的问题,它会自己安装一个openssl。
rvm package install openssl,rvm install 2.0.0 --with-openssl-dir=‘openssl path’
那么如何解决是最佳方式呢?
你说openssl,还是ruby2.0安装?
33L和37L,都是答案。
对于openssl,是ruby2.0需要需要比较新的openssl的development file。rbenv自己安装ruby2的时候,已经考虑了这个问题,它会自己附带安装最新的openssl,就是rbenv install 2.0.0-p0。当然你需要rbenv和rbenv-build都需要更新到最新。
亲测,你这个方法是简单又可行的。
这个方法的确可行,我也是按照本站的 wiki 安装失败之后,用这个方法安装成功的。
wiki确实应该更新了
这个方法很好使,搞了一个多星期,终于解决了 --!
后方可回复, 如果你还没有账号请点击这里 。
共收到 43 条回复Windows下OpenSSL安装配置
最近用到openssl,以前从来没用过,所以感觉特陌生,从下载安装、到编译通过,断断续续搞了两天时间,网上关于openssl的文章也很多,但可能很难找到一篇能完全解决自己的问题的,最终也是东拼西凑才终于通过。所以赶紧整理一下,或许后来者也能悟出点道道来。也很全面...遇到问题特别建议先看看官网FAQ以及openssl目录下的install.w32(install.w64)文件(直接拉到浏览器)。
本文系统环境:+Visual Studio 2005+Perl 5.8.6+OpenSSL 0.9.8。
一、预安装准备
1、安装Visual Studio 2005
如果安装的是,实际在编译OpenSSL时,总是会缺少某些文件,比如ml.exe,cl.exe....还有masm错误等,头都大了,还等着要测试,没时间一点点去试,直接换成Visual Studio 2005了。
2、安装Perl
下载地址:
天缘安装的ActivePerl-5.8.6.811-MSWin32-x86-122208.msi版本,太高版本没用,以前做手机软件时一直对这个版本倾爱有加。默认安装目录C:\Perl。
3、下载OpenSSL 0.9.8
下载地址:,版本不要太新(如果是做产品开发建议用最新的,前期测试所有软件都可以用老一点的,会少一些兼容问题,新版本往往跨度较大,修改较多,多个软件配合时自然很容易打架)。
如果只是使用OPENSSL,而且版本合适,可以尝试人家编译好了的直接安装即可(网上可搜索Win32OpenSSL,Win64OpenSSL),选择安装包请跟当前开发平台要对应,如果开发32位程序需使用32位OPENSSL,64位程序需对应64位OPENSSL。
二、安装OpenSSL
1、解压OpenSSL到系统盘
比如C:\OpenSSL。
2、配置WIN32环境
打开CMD命令行,进入C:\OpenSSL目录,执行命令
perl Configure VC-WIN32
3、进入VC BIN目录,配置VC环境变量
进入VS安装路径VC/Bin目录下,运行:
VCVARS32.BAT
设置环境变量。
4、返回OpenSSL目录,创建makefile文件
该命令不执行汇编语言编译,如报告文末错误,可以尝试ms\do_masm(使用汇编语言)、ms\do_nasm、ms\do_nt等,这几个配置文件是针对不同的系统配置写的批处理。
至于这几个命令区别如下,其它的暂时没用到未深究,有经验之士欢迎赐教。
- If you are using MASM then run:
& ms\do_masm
- If you are using NASM then run:
& ms\do_nasm
- If you don't want to use the assembly language files at all then run:
& ms\do_ms
5、在Openssl目录下,执行编译
nmake -f ms\ntdll.mak
最终编译动态库完成后,输出都在out32dll目录下:包括可执行文件、两个dll 和两个lib文件: libeay32.dll, libeay32.lib, ssleay32.dll, ssleay32.lib,如果使用VS/VC编程只需按照下文的方法进行即可,如果需要使用openssl命令,还需要在系统环境变量path中增加c:\openssl\out32dll路径,因为openssl.exe就在该目录下,声明后可以直接在命令行中使用openssl命令。
三、编程设置
1、 配置包含文件
打开VS-&Tools-&Options-&projects and solutions-&VC++ Directories(VC6路径VC-&Tools-&Options-&Directories),在Include files中增加C:\openssl\inc32目录,假设openssl安装目录为C:\openssl,下同。
在Libray files中增加C:\openssl\out32dll。
2、 包含头文件,导入LIB库
在源程序中包含以下三个头文件并加入LIB:
#include &openssl/ssl.h&
#include &openssl/err.h&
#include &openssl/bio.h&
#pragma comment(lib, &libeay32.lib&)
#pragma comment(lib, &ssleay32.lib&)
3、 更多OpenSSL编程参考:
四、常见错误及解决方法
1、不认识NMAKE?
解决办法A:
解决办法B:使用VS2005的控制台,开始菜单-&Microsoft Visual Studio 2005-&Visual Studio Tools-&Visual Studio 2005 Command Prompt。NMAKE目录实际在C:\Program Files\Microsoft Visual Studio 8\VC\bin下。
2、NMAKE编译fatal error?
NMAKE : fatal error U1077: 'cl' : return code '0x2'
NMAKE : fatal error U1077: 'ml' : return code '0x1'
NMAKE : fatal error U1077: 'link' : return code '0x460'
遇到以上错误,请参考:
3、NMAKE编译遇到message Error?
如果遇到:
Message: 'The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _read. See online help for details.' NMAKE : fatal error U1077: '&C:\Program Files\Microsoft Visual Studio 8\VC\BIN\cl.EXE&' : return code '0x2'
错误,打开ms\ntdll.mak,把CFLAG= /MD /W3 /WX....里的/WX标志去掉。
4、_md5_block_asm_host_order编译错误?
如果出现下面错误,可以尝试使用ms\do_masm编译命令。
link /nologo /subsystem:console /machine:I386 /opt:ref /dll /out:out32 dll\libeay32.dll /def:ms/LIBEAY32.def @C:\DOCUME~1\Test\LOCALS~1\Temp\nm58C.tmp ms/LIBEAY32.def(7) : warning LNK4017: DESCRIPTION statement not supported for ignored
Creating library out32dll\libeay32.lib and object out32dll\libeay32.exp
md5_dgst.obj : error LNK2019: unresolved external symbol _md5_block_asm_host_order referenced in function _MD5_Update
out32dll\libeay32.dll : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: '&C:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE&' : return code '0x460'
参考资料:
1、cnblogs( )
2、51cto()
相关文章:&&
相关评论(0):&&
邮箱(选填)
主页(选填)
记住我,下次回复时不用再次输入个人信息
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

我要回帖

更多关于 ruby openssl 证书 的文章

 

随机推荐