Ruby 1.9.1 rvm 安装失败

我正在尝试在我的系统上运行这个命令来使Ruby 1.9.1正常工作。
rvm install 1.9.1

它显示“运行make时出错”,当我查看日志文件时,这是我遇到的编译错误:
gcc -I. -I../../.ext/include/x86_64-linux -I../.././include -I../.././ext/openssl -DRUBY_EXTCONF_H=\"extconf.h\"    -fPIC  -O2 -g -Wall -Wno-parentheses  -fPIC  -o ossl.o -c ossl.c
ossl.c:118:1: error: unknown type name ‘STACK’
ossl.c:119:1: error: unknown type name ‘STACK’
make[1]: *** [ossl.o] Error 1
make[1]: Leaving directory `/var/cache/ruby-rvm/src/ruby-1.9.1-p431/ext/openssl'
make: *** [mkmain.sh] Error 1

那么这是怎么回事?我在 Ubuntu 11.04 上如何让 Ruby 1.9.1 工作?


你解决了这个问题吗?我在Debian上也遇到了同样的问题。看起来ruby 1.9.1与openssl 1.0.0不兼容。 - Mladen Jablanović
@Mladen Jablanović 有点儿。我不得不下载最新的openssl源代码,编译它,然后覆盖Ruby的openssl路径(或替换当前的openssl构建)。 - Hank
2个回答

STACK似乎是在我的系统上定义在/usr/include/openssl/stack.h中的一个typedef。
根据dpkg,这个文件是由libssl-dev提供的 - 你是否安装了这个软件包?

根据我自己系统上最新的 RVM 版本,要在 Ubuntu 11.10 上编译 Ruby,您需要安装以下软件:

build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion

我建议您安装它们,然后运行rvm reinstall 1.9.1来清理 1.9.1 代码并进行安装。


2当前所需的库列表可以使用rvm requirements命令列出。1.9.1是非常旧的版本,社区对它的关注度不高,你可以通过应用ruby-1.8.6 - openssl集成的补丁来构建它,命令为rvm reinstall 1.9.1 --patch $rvm_path/patches/ruby/1.8.6/openssl-1.0.patch,patches/ruby/1.8.6/no_sslv2.diff 还有更多的补丁可以帮助你,可以使用命令find $rvm_ruby/patches/ruby/ -type f来查找。 - mpapis