kubo / ruby-oci8

Ruby-oci8 - Oracle interface for ruby
Other
169 stars 78 forks source link

extconf.rb failed when installing ruby-oci8 on M1 Mac. #247

Closed thiagoluppi closed 1 year ago

thiagoluppi commented 1 year ago

Hey guys, I'm trying to install the gem but I'm facing some issues:

Ruby version 3.0.2 MacOs: Monterey 12.5.1 M1 apple silicon

Some info: $ file /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/bin/ruby /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/bin/ruby: Mach-O 64-bit executable arm64

This is what I get:

Installing ruby-oci8 2.2.11 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/bin/ruby -I /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0 -r
./siteconf20220829-81814-73z783.rb extconf.rb
attempting to locate oracle-instantclient...
checking load library path... 
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/bin/$(RUBY_BASE_NAME)
    --with-instant-client
    --without-instant-client
    --with-instant-client-dir
    --without-instant-client-dir
    --with-instant-client-include
    --without-instant-client-include=${instant-client-dir}/include
    --with-instant-client-lib
    --without-instant-client-lib=${instant-client-dir}/lib
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:507:in `guess_ic_dir': RuntimeError
(RuntimeError)
    from /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:257:in `get'
    from extconf.rb:22:in `<main>'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:507:in `guess_ic_dir': Oracle instant
client is not found. (RuntimeError)
You need to install Oracle instant client.
    from /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:257:in `get'
    from extconf.rb:22:in `<main>'
  OCI_DIR is not set.
  checking the default value of DYLD_FALLBACK_LIBRARY_PATH...
    checking /Users/thiagomessiasluppi/lib... no
    checking /usr/local/lib... no
    checking /lib... no
    checking /usr/lib... no
---------------------------------------------------
Error Message:
  Oracle instant client is not found.
  You need to install Oracle instant client.

Backtrace:
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:507:in `guess_ic_dir'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11/ext/oci8/oraconf.rb:257:in `get'
  extconf.rb:22:in `<main>'
---------------------------------------------------
See:
 * http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-full-client.md for Oracle full client
 * http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-instant-client.md for Oracle instant client
 * http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-on-osx.md for OS X
 * http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/report-installation-issue.md to report an issue.

extconf failed, exit code 1

Gem files will remain installed in /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/ruby-oci8-2.2.11 for inspection.
Results logged to /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/extensions/arm64-darwin-21/3.0.0/ruby-oci8-2.2.11/gem_make.out

  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/builder.rb:91:in `run'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:48:in `block in build'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/tempfile.rb:317:in `open'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/ext_conf_builder.rb:28:in `build'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/builder.rb:157:in `build_extension'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/builder.rb:191:in `block in build_extensions'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/builder.rb:188:in `each'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/ext/builder.rb:188:in `build_extensions'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/3.0.0/rubygems/installer.rb:828:in `build_extensions'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/rubygems_gem_installer.rb:72:in
`build_extensions'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/rubygems_gem_installer.rb:28:in `install'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/source/rubygems.rb:207:in `install'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/installer/gem_installer.rb:54:in `install'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/installer/gem_installer.rb:16:in
`install_from_spec'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/installer/parallel_installer.rb:186:in
`do_install'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/installer/parallel_installer.rb:177:in `block in
worker_pool'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/worker.rb:62:in `apply_func'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/worker.rb:57:in `block in process_queue'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/worker.rb:54:in `loop'
  /Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/worker.rb:54:in `process_queue'
/Users/thiagomessiasluppi/.rbenv/versions/3.0.2/lib/ruby/gems/3.0.0/gems/bundler-2.3.21/lib/bundler/worker.rb:91:in `block (2 levels) in
create_threads'

An error occurred while installing ruby-oci8 (2.2.11), and Bundler cannot continue.

In Gemfile:
  ruby-oci8
kubo commented 1 year ago

Ruby compiled for arm64 macOS cannot use ruby-oci8 because no Oracle clients for arm64 macOS has not been released.

If you can make ruby for intel, ruby-oci8 may be available. See https://github.com/kubo/ruby-oci8/issues/236.

thiagoluppi commented 1 year ago

So I need to rebuild rbenv's ruby for intel. I have no clue how to do it. Can you point me some directions?

kubo commented 1 year ago

I don't have M1 Mac. If you find a way, let me know.