준호씨의 블로그
OSX - cpan DBD::Oracle 본문
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
이렇게 열심히 정리 했지만 다음에 또 잘 될지는 의문이다. 그래도 다음엔 덜 하겠지.
참고
- osx - DBD::Oracle 설치 2018.10.05 https://junho85.pe.kr/1102
- osx - Oracle Instant Client 설치 2018.10.05 https://junho85.pe.kr/1101
'개발이야기' 카테고리의 다른 글
Java - "x개월 x일 남았습니다" 구하기 (0) | 2020.03.17 |
---|---|
OSX - cpan DBD::mysql (0) | 2020.03.05 |
정원사들 시즌5 시작. 일일커밋 (0) | 2020.03.04 |
IntelliJ - 자동줄바꿈. Soft Wrap (4) | 2020.02.09 |
유튜브 썸네일 추출기를 만들었습니다. (0) | 2020.02.09 |