ruby-install
ruby-install copied to clipboard
First installation (of Ruby 2.4.0) fails on OS X
> 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.
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.
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!
I had a very similar issue that was solved with:
brew install --force readline
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/
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
nevermind, a full laptop restart fixed the issue!
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?
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"
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