Ruby使用rbenv在OSX Lion上失败

Sam*_*Sam 7 ruby osx-lion

我一直在尝试在我的Lion机器上安装Ruby(OSX 10.7.3).

我安装了rbenv和ruby-build,我试图在我的机器上获得1.9.2-p290.以下是安装失败的输出:

$ rbenv install 1.9.2-p290
Downloading http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz...
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/CSC/.rbenv/versions/1.9.2-p290
Downloading http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz...
Installing ruby-1.9.2-p290...

BUILD FAILED

Inspect or clean up the working tree at /var/folders/vm/gcqcld015jx025m7qgtxvw0m0000gn/T/ruby-build.20120301140751.6239
Results logged to /var/folders/vm/gcqcld015jx025m7qgtxvw0m0000gn/T/ruby-build.20120301140751.6239.log

Last 10 log lines:
/usr/bin/gcc-4.2 -I. -I../../../.ext/include/x86_64-darwin11.3.0 -I../../.././include -I../../.././ext/racc/cparse -DRUBY_EXTCONF_H=\"extconf.h\" -I'/Users/SamCouch/.rbenv/versions/1.9.2-p290/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  -pipe  -o cparse.o -c cparse.c
/usr/bin/gcc-4.2 -dynamic -bundle -o ../../../.ext/x86_64-darwin11.3.0/racc/cparse.bundle cparse.o -L. -L../../.. -L. -L'/Users/SamCouch/.rbenv/versions/1.9.2-p290/lib'  -L/usr/local/lib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace  -lpthread -ldl -lobjc 
compiling readline
/usr/bin/gcc-4.2 -I. -I../../.ext/include/x86_64-darwin11.3.0 -I../.././include -I../.././ext/readline -DRUBY_EXTCONF_H=\"extconf.h\" -I'/Users/SamCouch/.rbenv/versions/1.9.2-p290/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  -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: *** [mkmain.sh] Error 1
Run Code Online (Sandbox Code Playgroud)

我试图解决这个问题,但到目前为止我还没有提出任何解决方案:

$ which gcc
/usr/bin/gcc
$ gcc
i686-apple-darwin11-llvm-gcc-4.2: no input files
$ ruby-build
ruby-build 20120216
usage: ruby-build [-v|--verbose] definition prefix
       ruby-build --definitions
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

作为旁注,我已尝试在此处发布其他类似的建议,但没有一个对我有用.

Joh*_*ley 16

根据ruby-build 问题#130,当前的解决方法是:

env CC=/usr/bin/gcc rbenv install 1.9.3-p125

我刚刚在一个系统上测试了这个:

  • OS X 10.7.3
  • Xcode 4.3.1
  • 安装Xcode的命令行工具(通过Xcode>首选项>下载)
  • ruby-build @ fbfa944
  • rbenv @ 975b45d

此外,挂起请求#137旨在一劳永逸地解决这个问题.

FWIW,许多人正在摆脱Xcode 4.3.x的构建链问题.如果你升级到新的工具链直到集体尘埃落定,那么任何系统都会出现一些不稳定因素.


cwd*_*cwd 5

似乎有两个或三个堆栈溢出问题与使用通过/ 在Mac OS X上rbenv安装ruby的错误有关,并且我已经尝试了很多这些解决方案而没有运气.设置编译器并通过自制软件安装apple gcc42编译器没有帮助(并且- 没有运气)因此我不确定它们是否必要.我正在使用经理,因此在尝试安装时这对我有用1.9.xhomebrewrbenvbrew install apple-gcc42CC=/usr/bin/gccrbenv1.9.3-p385

问题在于日志显示的readline:

readline.c: In function ‘username_completion_proc_call’:
readline.c:1499: error: ‘username_completion_function’ undeclared (first use in this function)
readline.c:1499: error: (Each undeclared identifier is reported only once
readline.c:1499: error: for each function it appears in.)
Run Code Online (Sandbox Code Playgroud)

因此,在专门查找该错误后,我找到了解决方案:

解:

brew install readline
CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install 1.9.3-p385
Run Code Online (Sandbox Code Playgroud)

您可以rbenv install 1.9.3-p385将命令的一部分与最新版本或您尝试安装的版本匹配.在此博客上找到了该说明.


Per*_*rry 0

这可能是根据您需要的级别而不是您直接询问的级别来回答的,但是:您是否考虑过简单地使用 macports(请参阅 macports.org)或 brew 作为安装 ruby​​ 1.9 的方式?它效果很好,而且省力得多。