kubo / ruby-oci8

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

Cannot install ruby-oci8 on OS X El Capitan #127

Closed CharlesIrvineKC closed 8 years ago

CharlesIrvineKC commented 8 years ago

Following the directions at http://www.rubydoc.info/github/kubo/ruby-oci8/file/docs/install-on-osx.md for manual installation, I am not able to install ruby-oci8. Problem reports log:

\ Console Output ****

Last login: Mon Apr 4 17:15:46 on ttys000 ~$ export OCI_DIR=/opt/oracle/instantclient_11_2/ ~$ gem install ruby-oci8 Building native extensions. This could take a while... ERROR: Error installing ruby-oci8: ERROR: Failed to build gem native extension.

current directory: /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8

/usr/local/opt/ruby/bin/ruby -r ./siteconf20160404-8794-nj6ug7.rb extconf.rb checking for load library path... DYLD_LIBRARY_PATH is not set. checking DYLD_FALLBACK_LIBRARY_PATH... checking /Users/crirvine/lib... no checking /usr/local/lib... no checking /lib... no checking /usr/lib... no checking OCI_DIR... checking /opt/oracle/instantclient_11_2/... yes checking dependent shared libraries in /opt/oracle/instantclient_11_2/libclntsh.dylib.11.1... * 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 --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=/usr/local/Cellar/ruby/2.2.3/bin/$(RUBY_BASE_NAME) --with-instant-client --without-instant-client /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:544:in block in check_ic_dir': RuntimeError (RuntimeError) from /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:534:inopen' from /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:534:in check_ic_dir' from /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:316:inget'

from extconf.rb:22:in `
'

Error Message: The output of "otool -L /opt/oracle/instantclient_11_2/libclntsh.dylib.11.1" is: | /opt/oracle/instantclient_11_2/libclntsh.dylib.11.1: | /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1 (compatibility version 0.0.0, current version 0.0.0) | /ade/dosulliv_ldapmac/oracle/ldap/lib/libnnz11.dylib (compatibility version 0.0.0, current version 0.0.0) | /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)

Ruby-oci8 doesn't work without DYLD_LIBRARY_PATH or DYLD_FALLBACK_LIBRARY_PATH because the dependent file "/ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1" doesn't exist.

If you need to use ruby-oci8 without DYLD_LIBRARY_PATH or DYLD_FALLBACK_LIBRARY_PATH, download "fix_oralib.rb" in https://github.com/kubo/fix_oralib_osx and execute it in the directory "/opt/oracle/instantclient_11_2" as follows to fix the path.

cd /opt/oracle/instantclient_11_2
curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
ruby fix_oralib.rb

Note: DYLD_* environment variables are unavailable for security reasons on OS X 10.11 El Capitan.

Backtrace: /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:544:in block in check_ic_dir' /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:534:inopen' /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:534:in check_ic_dir' /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1/ext/oci8/oraconf.rb:316:inget'

extconf.rb:22:in `
'

See:

extconf failed, exit code 1

Gem files will remain installed in /usr/local/lib/ruby/gems/2.2.0/gems/ruby-oci8-2.2.1 for inspection. Results logged to /usr/local/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0/ruby-oci8-2.2.1/gem_make.out

*** There was no mkmf.log file created ****

~$ file which ruby /usr/local/bin/ruby: Mach-O 64-bit executable x86_64 ~$ ruby --version ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14] ~$ ruby -r rbconfig -e "p Config::CONFIG['host']" -e:1:in <main>': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['CC']" -e:1:in

': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['CFLAGS']" -e:1:in <main>': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['LDSHARED']" -e:1:in
': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['LDFLAGS']" -e:1:in <main>': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['DLDLAGS']" -e:1:in
': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['LIBS']" -e:1:in <main>': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['GNU_LD']" -e:1:in
': uninitialized constant Config (NameError) ~$ ruby -r rbconfig -e "p Config::CONFIG['host']" -e:1:in `
': uninitialized constant Config (NameError)

~$ file /opt/oracle/instantclient_11_2/lib libclntsh.dylib libnnz11.dylib libociei.dylib libsqlplus.dylib
libclntsh.dylib.11.1 libocci.dylib.11.1 libocijdbc11.dylib libsqlplusic.dylib
~$ file /opt/oracle/instantclient_11_2/lib libclntsh.dylib libnnz11.dylib libociei.dylib libsqlplus.dylib
libclntsh.dylib.11.1 libocci.dylib.11.1 libocijdbc11.dylib libsqlplusic.dylib
~$ file /opt/oracle/instantclient_11_2/libclntsh.* /opt/oracle/instantclient_11_2/libclntsh.dylib: Mach-O 64-bit dynamically linked shared library x86_64 /opt/oracle/instantclient_11_2/libclntsh.dylib.11.1: Mach-O 64-bit dynamically linked shared library x86_64 ~$ echo $LD_LIBRARY_PATH

~$ echo $DYLD_LIBRARY_PATH

~$

kubo commented 8 years ago

Run the following command as in the error message.

cd /opt/oracle/instantclient_11_2
curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
ruby fix_oralib.rb
kubo commented 8 years ago

Sorry, I broke fix_oralib.rb. I'll revert it soon.

kubo commented 8 years ago

I fixed it by https://github.com/kubo/fix_oralib_osx/commit/bce578e4c6b2de9575e00e8abbae764a0af59f93. Could you run the following command again?

cd /opt/oracle/instantclient_11_2
curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
ruby fix_oralib.rb
CharlesIrvineKC commented 8 years ago

Yes, the problem is now resolved. Thanks