그제 새로 m1 맥북을 받으면서 개발환경을 설정하고있습니다.
nodejs 환경에서 사용되는 npm 저장소의 일반적인 모듈들은 큰 문제없이 사용 가능한데
oracledb모듈의 경우(c 언어로 짜여진 모듈들)
npm i oracledb로는 m1 칩에 맞는 pre built binary 를 저장소에서 제공하고있지 않아 설치가 안되는 문제가 있습니다.
이럴경우 git clone을 통해 oracledb 소스를 로컬에 받은 후 npm i ~/디렉토리/oracledb 로 설치하면 환경에 맞게 컴파일되어 정상 설치는 가능합니다.(xcode, python설치 필요)
하지만 런타임 오류가 발생해서 더이상 해결 방법이 없다고 현재는 결론 지었습니다.
oracledb를 로컬에서 컴파일하려면 오라클에서 제공하는 oracle instant client가 필요하고 이걸 기준으로 컴파일하는데 런타임중 arm64용 instant client 가 있어야한다고 에러가 나네요.
하지만 arm64용은 아직 제공하지 않고있고(라즈베리 파이용은 있는듯..), 거북이처럼 움직이는 오라클 특성상 자기들 독점소프트웨어를 빠르게 m1용으로 내어주진 않을것 같습니다.
결국... 개발은 기존 머신으로 해야하고.. 새로받은 맥북프로는... 장난감 신세가 되어버렸네요.
하지만 10분 걸리는 프로젝트 컴파일이 2분으로 단축된걸 보고는 소프트웨어 호환성 해결이 더욱 기다려집니다.
(node-rfc 역시 비슷한 이유로 런타임 오류가 나네요)
오라클의 JDBC 드라이버는 순수 자바로 되어 있어서 자바 런타임만 있으면 돌아갑니다.
혹시 docker 로 실행해도 안되려나요?
결국 cpu 는 m1이라 arm64아키텍처용 인스턴트 클라이언트를 요구한다고 고민하는 글을 본것 같습니다. 직접 도커로는 해보지 않았지만 틀린 내용이었음 좋겠네요. ㅜㅜ 관련 글타래도 구글에 많이 보이질 않는데 같은 고민하는 사람이 없진 않을텐데 후.. 제가 못찾은거였으면 좋겠습니다
제 M1 맥에서는 oracle instant client 도커 컨테이너 상에서 오라클 접속해서 쿼리까지 잘 실행이 되네요.
컨테이너 내에서 node.js 설치하고 oracledb example 돌려서 오라클 연결까지 되는걸로 봐서 한번 시도해보셔도 될 것 같습니다.
docker run --rm -it store/oracle/database-instantclient:12.2.0.1 sqlplus system/oracle@192.168.xx.xx
직접 확인까지 해봐주시다니. 출근하자마자 해봐야겠네요. !!!
정말 감사합니다.~!
사족으로 저같은 경우는 host에 연결된 vpn 너머에 있는 oracledb로 요청을 날려야하는데 docker 컨테이너 안에서는 호스트의 vpn을 공유하지는 못하더라구요. docker container => host => vpn => oracle database.
이제 이문제를 해결하러 가보겠습니다. ㅎㅎ
도움이 되셨다니 다행이네요. ㅎㅎ
예전 기억으로는 도커 서비스가 시작된 후에 VPN 접속을 한 경우 네트워크를 인식하지 못했던것 같습니다.
VPN 접속 후에 도커 서비스 재시작을 시도해보는 것도 방법일 수 있을듯 합니다.