programing

libclntsh.so .12.1 : node-oracledb 샘플을 실행할 때 공유 개체 파일을 열 수 없음

cafebook 2023. 10. 15. 17:53
반응형

libclntsh.so .12.1 : node-oracledb 샘플을 실행할 때 공유 개체 파일을 열 수 없음

Ubuntu에서 VMware 게스트 시스템(OpenSuse)의 Oracle 데이터베이스에 연결하는 것이 목표입니다.

지금은 oracledb 드라이버만 설치했고, 주어진 예제 연결 프로그램을 실행하려고 했습니다.

제가 따르고 있는 단계는 github INSTALL 페이지입니다.지금까지 제가 한 일은 다음과 같습니다.

1) node.js가 이미 설치되어 있기 때문에 3.1 단계를 생략했습니다.

2) 3.2단계에서 언급한 기본과 sdk를 성공적으로 다운로드 받아 추출하였습니다.

3) 이름이 적힌 소포를 찾을 수 없었기 때문에libaio하지만 전 발견했어요libaio1. 그래서 설치를 했습니다.libaio1.

4) 나는 환경 변수를 만들었습니다.LD_LIBRARY_PATH제 PC에 있는 내용은/opt/oracle/instantclient.

5) 3.3단계에서 언급한 바와 같이, 제 경우에는 의무사항이 아니었지만, 저는 두 가지 환경 변수를 만들었습니다.OCI_LIB_DIR내용이 있는/opt/oracle/instantclient그리고.OCI_INC_DIR내용이 있는/opt/oracle/instantclient/sdk/include.

6) 설치됨node-oracledb.

예제 연결 프로그램을 실행하려고 합니다.제가 사용하고 있는 코드는 여기 https://github.com/ishanatmuz/oracle-test 입니다.내가 뛸때node connect.js이 오류가 발생합니다.

/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:28
throw err;
          ^
Error: libclntsh.so.12.1: cannot open shared object file: No such file or directory
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/ishan/node.js/oracle-test/node_modules/oracledb/lib/oracledb.js:23:15)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (modullibclntsh.so.12.1e.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

아직 VMware 게스트 시스템을 시작하지 않았기 때문에 그러한 데이터베이스 인스턴스를 찾지 못해 오류가 발생할 것으로 예상했습니다.그런 다음 VMWare 시스템을 실행하고 그 안에 있는 데이터베이스에 연결해야 합니다.하지만 그 대신에 나는 오류가 발생하고 있습니다.cannot open shared object file위해서libclntsh.so.12.1.

LD_LIBRARY_PATH가 실제로 올바르게 설정되지 않았거나 내보내지 않은 것이 제 첫 번째 의혹입니다.노드를 시작하려는 실제 셸이 디렉토리를 읽을 수 있는지 세 번 확인합니다.

export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2

Node.js를 시작하는 셸에서 이 작업을 수행해야 합니다.

기계에 어떤 오라클 라이브러리가 설치되어 있는지 확인하고 충돌이 없는지 확인하겠습니다.

LD_LIBRARY_PATH를 설정하는 것보다 ldconfig를 사용하여 경로를 전역적으로 설정하는 것이 훨씬 쉽습니다.다음과 같은 작업을 수행할 수 있습니다.

sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

자세한 내용은 Instant Client 설치 지침을 참조하십시오.

다음과 같은 Net 구성 파일(옵션)이 있는 경우sqlnet.ora아니면tnsnames.ora, 그것들은 디렉토리에 넣을 수 있습니다./opt/oracle/instantclient_12_2/network/admin구성 파일의 기본 위치입니다.옵션 Oracle Net Configuration을 참조하십시오.

업데이트: Instant Client 19.3 RPM 패키지를 설치하면ldconfig단계는 자동으로 완료됩니다. (19.3 ZIP 파일을 설치하려면 여전히 필요/가능/해야 함)

Instant Client 19는 Oracle Database 11.2 이상에 연결되므로 이전 버전에 대한 특별한 요구 사항이 없는 경우 Instant Client 19를 사용합니다.

내보내기는 하나의 프로세스에만 적용됩니다.단말기 창에 표시되지 않는 것 같습니다(별도 프로세스입니다).다를 .node connect.js(노드를 시작할 때와 같은 터미널 창에서):

export LD_LIBRARY_PATH=/opt/oracle/instantclient:$LD_LIBRARY_PATH

언급URL : https://stackoverflow.com/questions/29330841/libclntsh-so-12-1-cannot-open-shared-object-file-error-when-running-sample-of

반응형