Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Ruby fails on OSX Lion with rbenv

Tags:

ruby

osx-lion

I've been trying to install Ruby on my Lion machine (OSX 10.7.3).

I installed rbenv and ruby-build and am trying to get 1.9.2-p290 on my machine. Here is the output of the install failing:

$ 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

I attempted to troubleshoot the issue, but so far I haven't come up with any solution:

$ 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

Any help would be greatly appreciated!

As a side note, I've tried other similar suggestions posted here, and none have worked for me.

like image 308
Sam Avatar asked Mar 01 '12 22:03

Sam


2 Answers

Per ruby-build issue #130 the current workaround is:

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

I've just tested this successfully on a system with:

  • OS X 10.7.3
  • Xcode 4.3.1
  • Command Line Tools for Xcode installed (via Xcode > Preferences > Downloads)
  • ruby-build @ fbfa944
  • rbenv @ 975b45d

Also, pending pull request #137 aims to fix this upstream once and for all.

FWIW, lots of folks are shaking out build chain issues with Xcode 4.3.x since it came out. Expect some instability in any system if you've upgraded to the new toolchain until the collective dust settles.

like image 126
John Whitley Avatar answered Jan 04 '23 05:01

John Whitley


There seem to be two or three stack overflow questions related to bugs with using rbenv to install ruby 1.9.x on Mac OS X via homebrew / rbenv and I have tried the solutions for many of them without luck. Setting the compiler and installing the apple gcc42 compiler via homebrew didn't help ( brew install apple-gcc42 and CC=/usr/bin/gcc - no luck ) so I'm not sure if they are necessary. I'm using the rbenv manager and so this is what worked for me when trying to install 1.9.3-p385

The problem is with the readline as the log shows:

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.)

So after looking specifically for that error I found the solution:

Solution:

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

You can chance the rbenv install 1.9.3-p385 part of the command to match whatever version is latest or that you are trying to install. Found the note on this blog.

like image 43
cwd Avatar answered Jan 04 '23 04:01

cwd