淘先锋技术网

首页 1 2 3 4 5 6 7

    今天装了个ruby-1.9.1-p129-i386-mswin32, 在下载的时候官网上明显提示要额外装一些组件, 原文是这样说的:Please note that some of the above binaries will require manual download and installation of additional components detailed on this page. Please ensure you’ve followed/performed these steps prior reporting a bug.

    刚好呢,我也需要OpenSSL这个东西, 大家都知道到在1.8.6以及以前的版本中是不支持OpenSSL的, 不以我以前的做法是把1.9里的OpenSSL的rb文件copy到我的rails项目中用,现在我直接用1.9就不用那么麻烦了。

    按上面英文里说的进到this page里, 就可以下载一个OpenSSL组件ZIP包, 我下的是openssl-0.9.8d-1-mswin3, 然后解压, 把bin/libeay32.dll文件拷到ruby安装目录下的bin目录里(当然这个目录是配置到系统环境变量里的), 但是当我在系统的控制台里运行gem命令时系统会弹出一个对话框,里面写着:“没有找到 SSLEAY32.dll, 因此这个应用程序未能启动. 重新安装应用程序可能会修复此问题。”在网上搜了一下,发现是因为没有找到ssleay32.dll文件, 但是在我解压里的ZIP包里确实没有ssleay32.dll文件, 所以我又另下了一个openssl-0.9.8k_WIN32.zip然后在解压后的bin目录里找到了ssleay32.dll文件,然后拷到ruby安装目录/bin里. 这样就OK了。

    对于OpenSSL还要注意一点: 据说openssl在版本升级之后, 将在win32平台上编译生成的文件名libssl32.dll修改成了ssleay32.dll,libeay32.dll的名字则没改变(OpenSSL的changelog里并没有提到文件名变化的问题,参见: http://www.--escaped_anchor:50fe2dfc15a50670285e5a19657fe3b0--.org/news/changelog.html ) 而很多依赖openssl的程序里,在加载OpenSSL的dll时,使用了固定的文件名字.只加载libssl32.dll或者ssleay32.dll, 因此在找不到文件的时候不会尝试另外一个文件名,就直接提示出错信息. 解决的办法也很简单,就是根据程序需要调用的dll名字,将libssl32.dll修改成ssleay32.dll,或者将ssleay32.dll修改成libssl32.dll.