준호씨의 블로그

OSX - cpan DBD::Oracle 본문

개발이야기

OSX - cpan DBD::Oracle

준호씨 2020. 3. 5. 20:48
반응형

perl 언어를 사용할 때 가장 어려운 부분중 하나는 DB 관련 모듈을 설치하는 부분이다. 한번에 잘 되는 경우도 잘 없고 OS 환경이나 모듈 버전이나 라이브러리 버전이 올라가면 뭔가 또 잘 안되는 경우들이 생기곤 한다.

Oracle Instant Client 설치

일단 Oracle Instant Client 는 설치해 두어야 한다.

$ brew install InstantClientTap/instantclient/instantclient-basic
$ brew install InstantClientTap/instantclient/instantclient-sqlplus
$ brew install InstantClientTap/instantclient/instantclient-sdk

예전에 비해 나아진 부분은 Oracle Instant Client 를 설치 하려면 미리 파일을 사이트에서 다운 받고 그걸 Homebrew Caches 디렉토리에 복사 해 둔 다음 brew 를 실행했어야 되었는데 요즘은 미리 안받아 두어도 brew 를 실행하면 다운로드도 같이 된다. (라이센스 문제가 해결 된 게 아니라면 언제 또 막힐지는 모르겠다)

instantclient-sdk 는 중요하다. 이게 없으면 DBD::Oracle 설치 할 때 다음과 같은 오류를 보게 될 것이다.

./Oracle.h:37:10: fatal error: 'oci.h' file not found
#include <oci.h>
         ^~~~~~~
1 error generated.
make: *** [Oracle.o] Error 1

ORACLE_HOME, DYLD_LIBRARY_PATH 환경변수 설정

이건 좀 애매한데 cpan DBD::Oracle 설치 하다 보면 자꾸 ORACLE_HOME 경고가 나타난다. 그러다가 알아서 찾았다는둥 메시지가 보이기도 한데 아무튼 최종 세팅할 때 사용한 경로는 brew info 에서 instantclient-sdk 가 설치된 경로를 사용하였다. (사실 그전에는 instantclient-basic 경로였는데 아마 instantclient-sdk 가 맞지 않을까... 잘 모르겠다.)

$ brew info InstantClientTap/instantclient/instantclient-sdk
instantclienttap/instantclient/instantclient-sdk: stable 19.3.0.0.0dbru
Oracle Instant Client SDK x64
https://www.oracle.com/database/technologies/instant-client/macos-intel-x86-downloads.html
/usr/local/Cellar/instantclient-sdk/19.3.0.0.0dbru (115 files, 3.3MB) *
  Built from source on 2020-03-05 at 20:32:45
From: https://github.com/instantclienttap/homebrew-instantclient/blob/master/Formula/instantclient-sdk.rb

brew info 로 instant client 가 설치 된 위치를 확인한다. 여기서 /usr/local/Cellar/instantclient-sdk/19.3.0.0.0dbru 를 ORACLE_HOME 으로 사용하면 된다. 설치된 버전마다 경로가 다를 수 있으니 주의하다.

 

의존 모듈 설치

설치 하면서 필요한 디펜던시들을 미리 설치 해 둔다. 환경에 따라 다를 수 있지만 나같은 경우 cpan 으로 모듈 설치 하려면 sudo 권한이 필요했다. sudo -s 로 root 터미널에서 작업한다.

cpan YAML

아니 이 정도는 그냥 설치 하면서 없으면 같이 설치 해 버리면 되지 않나? DBD::Oracle 을 설치 하려는데 YAML 모듈이 없으면 YAML 모듈을 설치 하라고 나온다.

cpan -fi DBI

음. 이건 미리 깔아둘 필요가 있었는지 좀 긴가민가 하다. 그런데 cpan DBI 으로 설치 하려고 하면 테스트가 실패 했다느니 하면서 force 설치 하라고 하기 때문에 그냥 -fi 옵션 넣어서 force 설치 하면 된다.

Files=202, Tests=10432, 74 wallclock secs ( 1.10 usr  0.56 sys + 50.18 cusr 16.27 csys = 68.11 CPU)
Result: FAIL
Failed 6/202 test programs. 0/10432 subtests failed.
make: *** [test_dynamic] Error 255

테스트는 실패 하지만 어쨌거나 설치는 된다. 도대체 무슨 테스트이기에 자꾸 실패하는걸까?

 

DBD::Oracle 설치

이놈을 깔기 위해 참 먼길을 헤쳐 왔다. 이 역시 force 설치 해 주어야 할 것이다.

cpan -fi DBD::Oracle

아아... 드디어 성공이다.

Installing /Users/junho85/perl5/man/man3/DBD::Oracle::Troubleshooting::Aix.3pm
Installing /Users/junho85/perl5/man/man3/DBD::Oracle::GetInfo.3pm
Appending installation info to /Users/junho85/perl5/lib/perl5/darwin-thread-multi-2level/perllocal.pod
  MJEVANS/DBD-Oracle-1.80.tar.gz
  /usr/bin/make install  -- OK

이렇게 열심히 정리 했지만 다음에 또 잘 될지는 의문이다. 그래도 다음엔 덜 하겠지.

 

참고

반응형
Comments