Ruby使用rbenv在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 

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

 $ 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 

任何帮助将不胜感激!

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

根据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的构建链问题。 如果你升级到新的工具链直到集体尘埃落定,那么任何系统都会出现一些不稳定因素。

使用rbenv在Mac OS X上通过homebrew / rbenv安装ruby 1.9.x似乎有两三个堆栈溢出问题与错误相关,我已经尝试了很多这些解决方案而没有运气。 设置编译器并通过自制软件安装apple gcc42编译器没有帮助( brew install apple-gcc42CC=/usr/bin/gcc – 没有运气)所以我不确定它们是否必要。 我正在使用rbenv管理器,因此在尝试安装1.9.3-p385时这对我1.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.) 

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

解:

 brew install readline CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline)" rbenv install 1.9.3-p385 

您可以通过rbenv install 1.9.3-p385命令来匹配最新版本或您尝试安装的版本。 在此博客上找到了该说明。

这可能是你需要的水平,而不是你所要求的水平,但是:你考虑过简单地使用macports(参见macports.org)或brew作为安装ruby 1.9的方式吗? 它工作得非常好,而且工作量更少。

这不完全是你要求的,但“ 无法在Lion下安装Ruby与RVM – GCC问题 ”解答如何让Ruby使用RVM处理Lion。 错误非常相似所以您可以:

使用它们作为rbenv故障排除的一些指导,或者只是使用顶部答案中描述的RVM以这种方式安装Ruby。 这对我来说似乎更容易。