ruby-install icon indicating copy to clipboard operation
ruby-install copied to clipboard

First installation (of Ruby 2.4.0) fails on OS X

Open ELLIOTTCABLE opened this issue 8 years ago • 9 comments

> ruby-install ruby                         
>>> Installing ruby 2.4.0 into /Users/ec/.rubies/ruby-2.4.0 ...
>>> Installing dependencies for ruby 2.4.0 ...
Updating Homebrew...
Warning: automake-1.15 already installed
Warning: bison is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version
Warning: openssl is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version
Warning: readline is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version
Warning: libyaml-0.1.7 already installed
Warning: gdbm-1.12 already installed
Warning: libffi is a keg-only and another version is linked to opt.
Use `brew install --force` if you want to install this version
>>> Downloading https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2 into /Users/ec/src ...
>>> Verifying ruby-2.4.0.tar.bz2 ...
>>> Extracting ruby-2.4.0.tar.bz2 to /Users/ec/src/ruby-2.4.0 ...
>>> Configuring ruby 2.4.0 ...
checking for ruby... /usr/local/bin/ruby
config.guess already exists
config.sub already exists
checking build system type... x86_64-apple-darwin16.4.0
checking host system type... x86_64-apple-darwin16.4.0
checking target system type... x86_64-apple-darwin16.4.0
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... configure: error: in `/Users/ec/src/ruby-2.4.0':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details
!!! Configuration of ruby 2.4.0 failed!

It looks like there's a bunch of packages already installed in Homebrew — (it'd be helpful if the output for those lines included which version chruby wants, and which it's getting.)

But even after brew uninstall automake bison openssl readline libyaml gdbm libffi, it still fails in the same way upon configuration.

ELLIOTTCABLE avatar Feb 01 '17 21:02 ELLIOTTCABLE

I get something similar:

...
compiling resize.c
linking shared-object -test-/array/resize.bundle
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
Undefined symbols for architecture x86_64:
  "_rb_ary_resize", referenced from:
      _ary_resize in resize.o
  "_rb_cArray", referenced from:
      _Init_resize in resize.o
  "_rb_define_method", referenced from:
      _Init_resize in resize.o
  "_rb_num2long", referenced from:
      _ary_resize in resize.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../../../../.ext/x86_64-darwin16/-test-/array/resize.bundle] Error 1
make[1]: *** [ext/-test-/array/resize/all] Error 2
make: *** [build-ext] Error 2
!!! Compiling ruby 2.4.0 failed!

Will write up more if I learn anything.

mattwynne avatar Feb 02 '17 23:02 mattwynne

OK so the fix for me was to brew install openssl --force (I'm not sure whether the --force was necessary or not) and follow the post-install instructions to export two environment variables:

LDFLAGS:  -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include

With that, it's installed like a charm. Thanks for a great piece of software @postmodern!

mattwynne avatar Feb 02 '17 23:02 mattwynne

I had a very similar issue that was solved with:

brew install --force readline

graygilmore avatar Feb 11 '17 20:02 graygilmore

I'm getting similar to @mattwynne:

compiling resize.c
linking shared-object -test-/array/resize.bundle
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
ld: warning: directory not found for option '-L/usr/local/Cellar/openssl/1.0.2k/lib'
Undefined symbols for architecture x86_64:
  "_rb_ary_resize", referenced from:
      _ary_resize in resize.o
  "_rb_cArray", referenced from:
      _Init_resize in resize.o
  "_rb_define_method", referenced from:
      _Init_resize in resize.o
  "_rb_num2long", referenced from:
      _ary_resize in resize.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [../../../../.ext/x86_64-darwin16/-test-/array/resize.bundle] Error 1
make[1]: *** [ext/-test-/array/resize/all] Error 2
make: *** [build-ext] Error 2
!!! Compiling ruby 2.4.0 failed!
2:31.03s total, 93.46s user, 45.90s system, 92% cpu
$ ls -la /usr/local/Cellar/openssl/
total 0
drwxr-xr-x   8 odin  admin   272 17 Oct 10:34 ./
drwxr-xr-x  95 odin  admin  3230 12 Feb 17:15 ../
drwxr-xr-x  11 odin  admin   374 29 May  2015 1.0.2a-1/
drwxr-xr-x  11 odin  admin   374 24 Jul  2015 1.0.2d_1/
drwxr-xr-x  11 odin  admin   374 18 Dec  2015 1.0.2e/
drwxr-xr-x  11 odin  admin   374 30 Jan  2016 1.0.2f/
drwxr-xr-x  11 odin  admin   374 30 Jun  2016 1.0.2h_1/
drwxr-xr-x  11 odin  admin   374 12 Feb 18:43 1.0.2j/

twe4ked avatar Feb 12 '17 07:02 twe4ked

Tried reinsatlling openssl and readline but still getting:

rbenv install 2.4.0
ruby-build: use openssl from homebrew
Downloading ruby-2.4.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.0.tar.bz2
Installing ruby-2.4.0...
ruby-build: use readline from homebrew

BUILD FAILED (OS X 10.12.3 using ruby-build 20170201)

Inspect or clean up the working tree at /var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034
Results logged to /var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034.log

Last 10 log lines:
checking build system type... x86_64-apple-darwin16.4.0
checking host system type... x86_64-apple-darwin16.4.0
checking target system type... x86_64-apple-darwin16.4.0
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... configure: error: in `/var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034/ruby-2.4.0':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

log file:

/var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034 ~/code/hynt/dice_rails
/var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034/ruby-2.4.0 /var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034 ~/code/hynt/dice_rails
checking for ruby... /usr/bin/ruby
config.guess already exists
config.sub already exists
checking build system type... x86_64-apple-darwin16.4.0
checking host system type... x86_64-apple-darwin16.4.0
checking target system type... x86_64-apple-darwin16.4.0
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... configure: error: in `/var/folders/sp/61ygj3qn6q1dl_8hmg0ljg8h0000gn/T/ruby-build.20170308011359.67034/ruby-2.4.0':
configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

bsy avatar Mar 08 '17 09:03 bsy

nevermind, a full laptop restart fixed the issue!

bsy avatar Mar 08 '17 09:03 bsy

closure.c:263:14: error: implicit declaration of function 'ffi_prep_closure' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    result = ffi_prep_closure(pcl, cif, callback, (void *)self);
             ^
1 error generated.
make[2]: *** [closure.o] Error 1
make[1]: *** [ext/fiddle/all] Error 2
make: *** [build-ext] Error 2
!!! Compiling ruby 2.4.10 failed!

I know homebrew has the [email protected] package which runs under the M1 architecture.

Any ideas on how to fix this?

sobrinho avatar Sep 15 '21 11:09 sobrinho

Fixed with:

export RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libffi/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"

sobrinho avatar Sep 15 '21 11:09 sobrinho

Fixed with:

export RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libffi/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"

Worked for me. MacOS: 13.2.1 (22D68) M1 max

marknus avatar Mar 29 '23 08:03 marknus