Cara menginstal Perl DBD :: Oracle dengan Oracle Instant Client di macOS Catalina
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::Oracle
saya 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_HOME
harus disetel ke nilai direktori yang berisi /bin
direktori tetapi saya tidak dapat menemukannya /bin
.
Jawaban
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.