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

Install in M1 and ruby 2.5.1

Open manukenar opened this issue 4 years ago • 8 comments

Hi,

ruby version :2.5.1 SO: Big Sur 11.3.1 Chip Apple M1

I cant use ruby-oci8, I just tried with 2.2.7, 2.2.8 and 2.2.9 and all have same error.

dlopen(/Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle, 9): no suitable image found. Did find: (LoadError) /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle: mach-o, but wrong architecture /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle: mach-o, but wrong architecture - /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle

I used this command to install it in my mac -> arch -x86_64 gem install ruby-oci8 If I do not use arch -x86_64, the command gem install return this: `Error Message: Could not compile with Oracle instant client. You may need to set the environment variable RC_ARCHS or ARCHFLAGS as follows:

  RC_ARCHS=x86_64
  export RC_ARCHS

or ARCHFLAGS='-arch x86_64' export RC_ARCHS

If it does not fix the problem, delete all '-arch arm64' in '/Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/-darwin20/rbconfig.rb'.`

Thanks

manukenar avatar Jul 05 '21 20:07 manukenar

Could you use ruby-oci8 under arch -x86_64? For example:

$ arch -x86_64 ruby -roci8 -e "p OCI8.oracle_client_version"

kubo avatar Jul 05 '21 23:07 kubo

Nop :(

mkenar@MacBook-Pro-de-mkenar ios-ui2 % arch -arm64 ruby -roci8 -e "p OCI8.oracle_client_version"

Traceback (most recent call last): 5: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in require' 4: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in rescue in require' 3: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in require' 2: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8.rb:107:in <top (required)>' 1: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in require' /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in require': dlopen(/Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle, 9): no suitable image found. Did find: (LoadError) /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle: mach-o, but wrong architecture /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle: mach-o, but wrong architecture - /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.7/lib/oci8lib_250.bundle

manukenar avatar Jul 06 '21 02:07 manukenar

Could you use arch -x86_64 instead of arch -arm64?

kubo avatar Jul 06 '21 03:07 kubo

arch -x86_64 ruby -roci8 -e "p OCI8.oracle_client_version"

Traceback (most recent call last): 5: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in require' 4: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in rescue in require' 3: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in require' 2: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8.rb:112:in <top (required)>' 1: from /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in require' /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in require': dlopen(/Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle, 9): no suitable image found. Did find: (LoadError) /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle: mach-o, but wrong architecture /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle: mach-o, but wrong architecture - /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle

manukenar avatar Jul 06 '21 03:07 manukenar

Could you post the output of the following commands?

$ file /Users/mkenar/.rbenv/versions/2.5.1/bin/ruby
$ file /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle

If /Users/mkenar/.rbenv/versions/2.5.1/bin/ruby isn't universal binary, could you rebuild it as x86_64 or universal binary containing both x86_64 and arm64? Oracle provides Oracle instant client for only x86_64 on macos. So both ruby and oci8lib_250.bundle must run as x86_64.

kubo avatar Jul 06 '21 12:07 kubo

mkenar@MacBook-Pro-de-mkenar ~ % file /Users/mkenar/.rbenv/versions/2.5.1/bin/ruby /Users/mkenar/.rbenv/versions/2.5.1/bin/ruby: Mach-O 64-bit executable arm64 mkenar@MacBook-Pro-de-mkenar ~ % file /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle /Users/mkenar/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/ruby-oci8-2.2.9/lib/oci8lib_250.bundle: Mach-O 64-bit bundle x86_64 mkenar@MacBook-Pro-de-mkenar ~ %

manukenar avatar Jul 06 '21 13:07 manukenar

/Users/mkenar/.rbenv/versions/2.5.1/bin/ruby: Mach-O 64-bit executable arm64

Could you rebuild it as Mach-O 64-bit executable x86_64 or universal binary containing both x86_64 and arm64? According to this page, x86_64 binary seems to be made by the -target x86_64-apple-macos10.12 C compiler option.

kubo avatar Jul 06 '21 13:07 kubo