安装ruby 1.9.3时出错

时间:2011-11-01 04:46:19

标签: rvm ruby-1.9.3

我正在尝试使用rvm安装Ruby 1.9.3。但是,当我输入:

rvm install 1.9.3

我收到以下错误:

ERROR: Error running 'make ', please read /Users/nick/.rvm/log/ruby-1.9.3-rc1/make.log
ERROR: There has been an error while running make. Halting the installation.

我正在运行Mac OS X Lion,我当前的Ruby版本是1.9.2。

编辑:make.log:

make[1]: Entering directory `/Users/nick/.rvm/src/ruby-1.9.3/ext/readline'
/usr/bin/gcc-4.2 -I. -I../../.ext/include/x86_64-darwin11.0.0 -I../.././include -I../.././ext/readline -DRUBY_EXTCONF_H=\"extconf.h\" -I/Users/nick/.rvm/usr/include -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 readline.o -c readline.c
readline.c: In function ‘username_completion_proc_call’:
readline.c:1386: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:1386: error: (Each undeclared identifier is reported only once
readline.c:1386: error: for each function it appears in.)
make[1]: *** [readline.o] Error 1
make[1]: Leaving directory `/Users/nick/.rvm/src/ruby-1.9.3/ext/readline'
make: *** [mkmain.sh] Error 1

4 个答案:

答案 0 :(得分:12)

更简单,更通用的解决方案是显式安装有问题的软件包,然后使用该软件包重新安装。在我的情况下,它在openssl_missing上中止,所以:

rvm pkg install openssl
rvm install 1.9.3 -C "--with-openssl-dir=$HOME/.rvm/usr"

对于您的情况,可能是:

rvm pkg install readline
rvm install 1.9.3 -C "--with-readline-dir=$HOME/.rvm/usr"

这当然假设你自己安装了rvm。相应地改变......

答案 1 :(得分:3)

这是readline的问题。尝试从源代码编译readline

curl -O ftp://ftp.gnu.org/gnu/readline/readline-6.1.tar.gz
tar xzvf readline-6.1.tar.gz
cd readline-6.1
./configure --prefix=/usr/local
make
sudo make install

Source

答案 2 :(得分:0)

我也遇到过关于Snow Leopard 1.9.3的问题。我的make.log看起来像这样:

[2011-11-06 16:22:52] make 
CC = /usr/bin/gcc-4.2
LD = ld
LDSHARED = /usr/bin/gcc-4.2 -dynamiclib
CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -fno-common -pipe
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I. -I.ext/include/x86_64-darwin10.8.0 -I./include -I.
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -install_name /Users/strike/.rvm/rubies/ruby-1.9.3-p0/lib/libruby.1.9.1.dylib -current_version 1.9.1 -compatibility_version 1.9.1 -Wl,-unexported_symbol,_Init_* -Wl,-unexported_symbol,*_threadptr_*  -Wl,-u,_objc_msgSend   
SOLIBS = 
compiling dmyencoding.c
compiling array.c
compiling bignum.c
compiling dir.c
compiling enum.c
compiling load.c
compiling file.c
compiling gc.c
gc.c: In function ‘initial_expand_heap’:
gc.c:1112: warning: implicit conversion shortens 64-bit value into a 32-bit value
compiling hash.c
compiling io.c
compiling marshal.c
compiling numeric.c
compiling object.c
compiling parse.c
compiling process.c
compiling re.c
compiling ruby.c
compiling util.c
compiling variable.c
compiling debug.c
linking miniruby
rbconfig.rb unchanged
generating enc.mk
compiling encoding.c
generating prelude.c
compiling prelude.c
linking static-library libruby.1.9.1-static.a
linking shared-library libruby.1.9.1.dylib
generating encdb.h
encdb.h unchanged
making enc
make[1]: Nothing to be done for `enc'.
making srcs under enc
make[1]: Nothing to be done for `srcs'.
generating transdb.h
transdb.h unchanged
making trans
make[1]: Nothing to be done for `./enc/trans'.
making encs
file2lastrev.rb: does not seem to be under a vcs: .
make: [.revision.time] Error 1 (ignored)
./revision.h unchanged
/bin/sh: line 0: cd: ext/-test-/add_suffix: No such file or directory
make[1]: *** [ext/-test-/add_suffix/all] Error 1
make: *** [build-ext] Error 2

答案 3 :(得分:0)

您使用的是哪个版本的Xcode - 4.1或4.2? 4.2和Ruby存在一些问题,因为4.2使用LLVM而不是GCC作为主编译器。如果您有4.2,则部分信息here可能对您有所帮助。如果你有4.2,但不介意回到4.1,可以从他们的开发者页面上从Apple下载4.1,但它被埋没了。