rubymacos-big-surchrubyruby-install

ruby-install fails when installing ruby 2.6.x and 3.0.x on mac osx 11.6


When running ruby-install, it fails to build. This also reported in rbenv issues (https://github.com/rbenv/ruby-build/issues/1725).

for example when installing ruby 2.6.8

# installing via ruby-install ( https://github.com/postmodern/ruby-install )
ruby-install ruby 2.6.8

it results in the following error

ossl_x509store.c:452:30: note: ')' token is here
    result = rb_funcall(ctx, rb_intern("verify"), 0);
                             ^~~~~~~~~~~~~~~~~~~
../.././include/ruby/ruby.h:1826:56: note: expanded from macro 'rb_intern'
        __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : \
                                                       ^
../.././include/ruby/ruby.h:2602:20: note: expanded from macro 'rb_funcall'
        rb_funcallv(recv, mid, \
                          ^~~
6 warnings generated.
linking shared-object openssl.bundle
installing default openssl libraries
make[2]: Leaving directory '/Users/xxxxx/src/ruby-2.6.8/ext/openssl'
make[2]: Entering directory '/Users/xxxxx/src/ruby-2.6.8/ext/ripper'
extracting ripper.y from ../.././parse.y
compiling compiler ripper.y
ripper.y:762.9-16: syntax error, unexpected identifier, expecting string
make[2]: *** [Makefile:332: ripper.c] Error 1
make[2]: Leaving directory '/Users/xxxxx/src/ruby-2.6.8/ext/ripper'
make[1]: *** [exts.mk:257: ext/ripper/all] Error 2
make[1]: Leaving directory '/Users/xxxxx/src/ruby-2.6.8'
make: *** [uncommon.mk:286: build-ext] Error 2
!!! Compiling ruby 2.6.8 failed!

Solution

  • Seems to be a compiler issue. First ensure that Xcode is installed appropriately. In my case, I had it installed already but you can opt to reinstall to be sure. hope this helps people save time trying to figure out the issue as compiling it takes several minutes.

    # check xcode, should yield : /Library/Developer/CommandLineTools
    xcode-select -p
    
    # check xcode, should yield : xcode-select version 2384
    xcode-select -v
    
    # install xcode-select
    xcode-select --install
    
    # reinstall openssl and version 3
    brew reinstall openssl@1.1
    
    # install build dependancies
    brew install openssl readline libyaml zlib bison bison@2.7
    
    # ensure build is using bison
    export PATH="$(brew --prefix bison@2.7)/bin:$PATH"
    
    # set ruby compilation flags
    export CFLAGS="-Wno-error=implicit-function-declaration"
    export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-zlib-dir=$(brew --prefix zlib)"
    
    # install ruby via ruby-install
    ruby-install ruby 2.6.8
    

    a couple more steps if it fails

    # ensure that openssl is linked
    brew unlink openssl && brew link openssl --force
    
    # load openssl 1.1 for compilation
    export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
    export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
    export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
    
    # install ruby via ruby-install
    ruby-install ruby 2.7.7