Symptoms
On Apple Silicon (arm64), brew install instantclient-basic and alike installs x84_64 binary in Homebrew prefix while arm64 is expected
Root cause
The Homebrew cask still provides Intel binary only
or
If brew fails to detect arm64 architecture, it installs x84_64 binary
Solution or workarounds
To force installing arm64 binary on arm64 based OS, use the commands below:
$ brew install instantclient-arm64-basic
$ brew install instantclient-arm64-sqlplus
$ brew install instantclient-arm64-sdk
To replicate the symptoms
Follow the steps for installing Oracle Instant Client on macOS Silicon (arm64):
$ brew tap InstantClientTap/instantclient
$ brew install instantclient-basic
$ file '/opt/homebrew/lib/libclntsh.dylib'
Output shows x84_64 based library
This can be replicated at will.
Output:
❯ brew install instantclient-basic
==> Auto-updating Homebrew...
Adjust how often this is run with `$HOMEBREW_AUTO_UPDATE_SECS` or disable with
`$HOMEBREW_NO_AUTO_UPDATE=1`. Hide these hints with `$HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
==> Downloading https://ghcr.io/v2/homebrew/core/portable-ruby/blobs/sha256:1c98fa49eacc935640a6f8e10a2bf33f14cfc276804b71ddb658ea45ba99d167
############################################################################## 100.0%
==> Pouring portable-ruby-3.4.8.arm64_big_sur.bottle.tar.gz
==> Auto-updated Homebrew!
...
==> New Formulae
....
You have 2 outdated formulae installed.
==> Fetching downloads for: instantclient-basic
✔︎ Formula instantclient-basic (19.8.0.0.0dbru) [Verified 75.2MB/ 75.2MB]
==> Installing instantclient-basic from instantclienttap/instantclient
🍺 /opt/homebrew/Cellar/instantclient-basic/19.8.0.0.0dbru: 20 files, 245.0MB, built in 3 seconds
==> Running `brew cleanup instantclient-basic`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
❯
❯ file '/opt/homebrew/lib/libclntsh.dylib'
/opt/homebrew/lib/libclntsh.dylib: Mach-O 64-bit dynamically linked shared library x86_64
❯
Symptoms
On Apple Silicon (arm64),
brew install instantclient-basicand alike installs x84_64 binary in Homebrew prefix while arm64 is expectedRoot cause
The Homebrew cask still provides Intel binary only
or
If brew fails to detect
arm64architecture, it installs x84_64 binarySolution or workarounds
To force installing arm64 binary on arm64 based OS, use the commands below:
$ brew install instantclient-arm64-basic
$ brew install instantclient-arm64-sqlplus
$ brew install instantclient-arm64-sdk
To replicate the symptoms
Follow the steps for installing Oracle Instant Client on macOS Silicon (arm64):
Output shows x84_64 based library
This can be replicated at will.
Output: