Cara menginstal Perl DBD :: Oracle dengan Oracle Instant Client di macOS Catalina

Dec 17 2020

Saya menjalankan macOS Catalina 10.15.7 dan saya perlu menginstal Oracle Instant Client untuk menjalankan skrip Perl yang terhubung ke DB.

1. Menginstal Oracle Instant Client

Saya mengunduh paket yang saya butuhkan:

  • Paket Cahaya Dasar (DMG)
  • Paket SDK (DMG)
  • Paket ODBC (DMG)

Dari Klien Instan 19.8 dan ikuti petunjuk penginstalan tanpa masalah apa pun (cukup salin dan tempel)

File diekstrak dalam /Users/username/Downloads/instantclient_19_8

2. Pengaturan ORACLE_HOME

Selanjutnya, saya menyetel ORACLE_HOME ke /Users/username/Downloads/instantclient_19_8

export ORACLE_HOME=/Users/username/Downloads/instantclient_19_8

3. Menginstal DBD::Oracle

Ketika saya mencoba menginstal, DBD::Oraclesaya mendapat kesalahan berikut:

$ cpanm DBD::Oracle
--> Working on DBD::Oracle
Fetching http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz ... OK
Configuring DBD-Oracle-1.80 ... N/A
! Configure failed for DBD-Oracle-1.80. See /Users/username/.cpanm/work/1608142485.48272/build.log for details.

Isi file log:

$ cat /Users/username/.cpanm/work/1608142485.48272/build.log
cpanm (App::cpanminus) 1.7044 on perl 5.032000 built for darwin-thread-multi-2level
Work directory is /Users/username/.cpanm/work/1608142485.48272
You have make /usr/bin/make
You have LWP 6.47
You have /usr/bin/tar: bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.6
You have /usr/bin/unzip
Searching DBD::Oracle () on cpanmetadb ...
--> Working on DBD::Oracle
Fetching http://www.cpan.org/authors/id/M/MJ/MJEVANS/DBD-Oracle-1.80.tar.gz
-> OK
Unpacking DBD-Oracle-1.80.tar.gz
Entering DBD-Oracle-1.80
Checking configure dependencies from META.json
Checking if you have Config 0 ... Yes (5.032000)
Checking if you have Encode 0 ... Yes (3.06)
Checking if you have Math::BigInt 0 ... Yes (1.999818)
Checking if you have Devel::Peek 0 ... Yes (1.28)
Checking if you have Test::More 0 ... Yes (1.302177)
Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.44)
Checking if you have Data::Dumper 0 ... Yes (2.174)
Checking if you have DBI 1.623 ... Yes (1.643)
Checking if you have Test::NoWarnings 0 ... Yes (1.04)
Configuring DBD-Oracle-1.80
Running Makefile.PL
Using DBI 1.643 (for perl 5.032000 on darwin-thread-multi-2level) installed in /usr/local/Cellar/perl/5.32.0/lib/perl5/site_perl/5.32.0/darwin-thread-multi-2level/auto/DBI/
Configuring DBD::Oracle for perl 5.032000 on darwin (darwin-thread-multi-2level)

If you encounter any problem, a collection of troubleshooting
guides are available under lib/DBD/Oracle/Troubleshooting.
'DBD::Oracle::Troubleshooting' is the general troubleshooting
guide, while platform-specific troubleshooting hints
live in their labelled sub-document (e.g., Win32
hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod').

Trying to find an ORACLE_HOME
Your DYLD_LIBRARY_PATH env var is set to ''

      The ORACLE_HOME environment variable is not set and I couldn't guess it.
      It must be set to hold the path to an Oracle installation directory
      on this machine (or a machine with a compatible architecture).
      See the appropriate troubleshooting guide for your OS for more information.
      ABORTED!

-> N/A
-> FAIL Configure failed for DBD-Oracle-1.80. See /Users/username/.cpanm/work/1608142485.48272/build.log for details.

Saya telah membaca di sini yang ORACLE_HOMEharus disetel ke nilai direktori yang berisi /bindirektori tetapi saya tidak dapat menemukannya /bin.

Jawaban

2 ChristopherJones Dec 17 2020 at 05:12

macOS selalu berubah, tetapi di Mojave saya menginstal Klien Instan dari DMG dan kemudian melakukan:

brew install perl
ln -s $HOME/Downloads/instantclient_19_8 $HOME/instantclient
export DYLD_LIBRARY_PATH=$HOME/instantclient
cpan -i -T DBI
cpan -i -T DBD::Oracle

Secara umum, jangan pernah menyetel ORACLE_HOME untuk Klien Instan. (Ini dapat menyebabkan file konfigurasi yang salah dibaca). ORACLE_HOME digunakan untuk database 'penuh' atau penginstalan klien lengkap, bukan untuk Klien Instan. Namun, beberapa installer masih mereferensikan variabel untuk menemukan file build, jadi Anda akan membutuhkannya - setidaknya pada waktu build. DBD :: Oracle akan mencari Klien Instan secara internal dan menggunakan $ HOME / instantclient jika $ ORACLE_HOME tidak disetel.

macOS secara bertahap menghapus kegunaan DYLD_LIBRARY_PATH, karena tidak disebarkan ke subkulit. Ini berarti itu tidak dapat digunakan dengan andal. Di Mojave saya menemukan bahwa saya dapat menyalin pustaka Klien Instan ke $ HOME / lib / dan tidak perlu menyetel DYLD_LIBRARY_PATH.

Catatan tambahan: jika Anda menggunakan DBD :: Oracle, Anda tidak memerlukan paket ODBC Klien Instan.