MacOS Catalina'da Oracle Instant Client ile Perl DBD :: Oracle nasıl kurulur

Dec 17 2020

MacOS Catalina 10.15.7 çalıştırıyorum ve bir DB'ye bağlanan bir Perl betiği çalıştırmak için Oracle Instant Client yüklemem gerekiyor.

1. Oracle Instant Client Kurma

İhtiyacım olan paketleri indirdim:

  • Temel Işık Paketi (DMG)
  • SDK Paketi (DMG)
  • ODBC Paketi (DMG)

Instant Client 19.8'den ve herhangi bir sorun olmadan kurulum talimatlarını takip etti (sadece kopyalayıp yapıştırarak)

Dosyalar, /Users/username/Downloads/instantclient_19_8

2. Ayar ORACLE_HOME

Sonra, ORACLE_HOME'u şu şekilde ayarladım: /Users/username/Downloads/instantclient_19_8

export ORACLE_HOME=/Users/username/Downloads/instantclient_19_8

3. Kurulum DBD::Oracle

Yüklemeye çalıştığımda DBD::Oracleaşağıdaki hatayı aldım:

$ 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.

Günlük dosyasının içeriği:

$ 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.

Okudum burada o ORACLE_HOMEiçeren dizine değerine ayarlanmalıdır /bindizini ama herhangi bulamıyor /bin.

Yanıtlar

2 ChristopherJones Dec 17 2020 at 05:12

macOS her zaman değişiyor, ancak Mojave'de DMG'lerden Instant Client kurdum ve sonra şunu yaptım:

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

Genel olarak, ORACLE_HOME'u Instant Client için asla ayarlamayın. (Yanlış yapılandırma dosyalarının okunmasına neden olabilir). ORACLE_HOME, Instant Client için değil, 'tam' veritabanı veya tam istemci kurulumu için kullanılır. Ancak bazı yükleyiciler, derleme dosyalarını bulmak için değişkene başvurmaya devam eder, bu nedenle buna ihtiyacınız olacaktır - en azından derleme zamanında. DBD :: Oracle dahili olarak Instant Client arayacak ve $ ORACLE_HOME ayarlanmamışsa $ HOME / instantclient kullanacaktır.

macOS, alt kabuklara yayılmadığı için DYLD_LIBRARY_PATH'nin kullanışlılığını aşamalı olarak kaldırdı. Bu, güvenilir bir şekilde kullanılamayacağı anlamına gelir. Mojave'de Anlık İstemci kitaplıklarını alternatif olarak $ HOME / lib / içine kopyalayabileceğimi ve DYLD_LIBRARY_PATH ayarlamam gerekmediğini fark ettim.

Yan not: DBD :: Oracle kullanıyorsanız, Instant Client ODBC paketine ihtiyacınız yoktur.