在Mac OS X Snow Leopard上使用RVM安装Ruby 1.9.2出现问题

4
我刚开始学习Ruby,并尝试在Macbook Air上使用RVM安装最新版本,但一直失败。我一定做错了什么,因为在网上进行了广泛搜索后,没有看到其他人抱怨过这个确切的错误,在安装Ruby时出现了这个问题。
采取的步骤:
Dima$ rvm install ruby-1.9.2-p290
Installing Ruby from source to: /Users/Dima/.rvm/rubies/ruby-1.9.2-p290, this may take a while depending on your cpu(s)...

ruby-1.9.2-p290 - #fetching 
ruby-1.9.2-p290 - #extracted to /Users/Dima/.rvm/src/ruby-1.9.2-p290 (already extracted)
Fetching yaml-0.1.4.tar.gz to /Users/Dima/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/Dima/.rvm/src
Configuring yaml in /Users/Dima/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/Dima/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/Dima/.rvm/usr
ruby-1.9.2-p290 - #configuring 
ruby-1.9.2-p290 - #compiling 
ERROR: Error running 'make ', please read /Users/Dima/.rvm/log/ruby-1.9.2-p290/make.log
ERROR: There has been an error while running make. Halting the installation.

接下来,如错误信息所建议的那样,我查看了make.log文件:

compiling fiddle
/usr/bin/gcc-4.2 -I. -I../../.ext/include/x86_64-darwin10.7.0 -I../.././include -I../.././ext/fiddle -DRUBY_EXTCONF_H=\"extconf.h\" -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long  -fno-common -pipe  -o closure.o -c closure.c
In file included from closure.c:1:
./fiddle.h:18:17: error: ffi.h: No such file or directory
In file included from ./fiddle.h:71,
                 from closure.c:1:
./conversions.h:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
closure.c:7: error: expected specifier-qualifier-list before ‘ffi_closure’
closure.c: In function ‘dealloc’:
closure.c:22: error: ‘fiddle_closure’ has no member named ‘pcl’
closure.c:26: error: ‘fiddle_closure’ has no member named ‘cif’
closure.c:27: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:27: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c: In function ‘closure_memsize’:
closure.c:40: error: ‘fiddle_closure’ has no member named ‘cif’
closure.c:42: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:43: error: ‘ffi_closure’ undeclared (first use in this function)
closure.c:43: error: (Each undeclared identifier is reported only once
closure.c:43: error: for each function it appears in.)
closure.c: At top level:
closure.c:54: error: expected ‘)’ before ‘*’ token
closure.c: In function ‘allocate’:
closure.c:146: error: ‘fiddle_closure’ has no member named ‘pcl’
closure.c:146: error: ‘ffi_closure’ undeclared (first use in this function)
closure.c:151: error: ‘fiddle_closure’ has no member named ‘cif’
closure.c:151: error: ‘ffi_cif’ undeclared (first use in this function)
closure.c: In function ‘initialize’:
closure.c:163: error: ‘ffi_cif’ undeclared (first use in this function)
closure.c:163: error: ‘cif’ undeclared (first use in this function)
closure.c:164: error: ‘ffi_closure’ undeclared (first use in this function)
closure.c:164: error: ‘pcl’ undeclared (first use in this function)
closure.c:165: error: ‘ffi_status’ undeclared (first use in this function)
closure.c:165: error: expected ‘;’ before ‘result’
closure.c:169: error: ‘FFI_DEFAULT_ABI’ undeclared (first use in this function)
closure.c:177: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:177: error: ‘ffi_type’ undeclared (first use in this function)
closure.c:177: error: expected expression before ‘)’ token
closure.c:181: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:183: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:188: error: ‘fiddle_closure’ has no member named ‘cif’
closure.c:189: error: ‘fiddle_closure’ has no member named ‘pcl’
closure.c:191: error: ‘result’ undeclared (first use in this function)
closure.c:193: error: ‘fiddle_closure’ has no member named ‘argv’
closure.c:195: error: ‘FFI_OK’ undeclared (first use in this function)
closure.c:199: error: ‘callback’ undeclared (first use in this function)
make[1]: *** [closure.o] Error 1
make: *** [mkmain.sh] Error 1

我不确定如何准确地解决这个问题,我的第一反应是我没有安装FFI,但我从未在Ruby的任何安装步骤中看到这个要求。这是特定于我的计算机吗?
希望有经验的人能给予帮助,非常感谢。由于我不太确定如何排除故障,请让我知道哪些附加信息有助于排除故障,我会将其添加到帖子中。
谢谢。
3个回答

2

我会去查看,但我的MacBook Air不是新安装的,我已经安装了一些其他的开发环境/工具,所以我正在努力找出如何修复这个安装部分的问题。我已经安装了Ruby 1.8.7,因为它随着Snow Leopard一起提供,我只是想升级到最新版本,但遇到了这个问题。 - Dmitry Samuylov

1

当我在我的MacBook Pro上开始进行一些Rails编程时,使用rvm安装Ruby时遇到了一些错误。我不记得具体的错误信息,但是我必须先安装Xcode,然后才能使用rvm安装Ruby。


是的,我相信RVM使用安装在Xcode中的编译器来编译Ruby代码,但我的Macbook上已经安装了Xcode,版本为3.2.5(1760)。 - Dmitry Samuylov

0
经过数小时的挫败后,我最终在我的Macbook Air上加载了Mac OS X Lion和Xcode 4,然后再次尝试运行rvm install ruby-1.9.2-p290,这次却毫无问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接