5

我正在尝试使用 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

4 回答 4

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。相应地改变...

于 2011-12-07T18:28:21.670 回答
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

来源

于 2011-11-01T05:03:23.397 回答
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
于 2011-11-06T21:25:07.803 回答
0

您使用的是哪个版本的 Xcode - 4.1 或 4.2?4.2 和 Ruby 存在一些问题,因为 4.2 使用 LLVM 而不是 GCC 作为主要编译器。如果您有 4.2,此处的一些信息可能会对您有所帮助。如果您有 4.2 但不介意回到 4.1,则可以在 Apple 的开发者页面上下载 4.1,但它相当隐蔽。

于 2012-01-09T07:00:06.453 回答