NetWorker: nsrexecd: 공유 라이브러리 로드 중 오류 발생: libosysrtxml.so
Summary: NetWorker: nsrexecd: 공유 라이브러리를 로드하는 동안 오류가 발생했습니다. libosysrtxml.so: 공유 오브젝트 파일을 열 수 없음: No such file or directory.
Symptoms
nsrexecd를 시작할 수 없습니다. nsrexecd를 시작할 수 없습니다.
# /usr/sbin/nsrexecd
/usr/sbin/nsrexecd: error while loading shared libraries: libosysrtxml.so: cannot open shared object file: No such file or directory
그러나 Linux 파일 시스템에서 libosysrtxml.so 찾을 수 있습니다.
# find / -name libosysrtxml.so
/usr/lib/nsr/lib64/cst/libosysrtxml.so
/opt/lgtonmc/lib64/cst/libosysrtxml.so
/mnt/alt/x/usr/lib/nsr/libosysrtxml.so
ldd(List Dynamic Dependencies)를 사용하여 nsrexecd에 필요한 라이브러리를 나열하면 누락된 라이브러리가 표시됩니다.
# ldd /usr/sbin/nsrexecd
linux-vdso.so.1 => (0x00007fff1a5a5000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffa9831b000)
libosysrtxml.so => not found
libCSP-LDAP.so => not found
libCSP-LDAPClient.so => not found
libCSP-lb.so => not found
libCSP-C.so => not found
libCSP-XML.so => not found
libCSP-RT.so => not found
libCSP.so => not found
libCSPI.so => not found
libCST-Admin.so => not found
librt.so.1 => /lib64/librt.so.1 (0x00007ffa9810e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffa97ef1000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007ffa97bea000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffa97971000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffa975fa000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffa9852b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffa973e3000)
Cause
Resolution
1) 시작 스크립트 /etc/init.d/networker를 통해 NetWorker 프로세스를 시작합니다.
시작 스크립트에는 NetWorker 데몬을 실행하는 데 필요한 라이브러리의 정의와 실행 파일의 경로가 있습니다.
# networkerrc는 LD_LIBRARY_PATH와 같은 환경 변수를 정의합니다.
# NetWorker 데몬을 실행합니다.
NETWORKERRC=/opt/nsr/admin/networkerrc
networkerrc 살펴보기 --
# pwd
/opt/nsr/admin/networkerrc
# NetWorker 데몬을 실행하는 데 필요한 환경 변수를 정의합니다.
# 최종 사용자는 사용자 환경 변수를 추가하기 위해 이 파일을 수정해서는 안 됩니다.
# 이 파일은 패키지 제거 시 자동으로 제거됩니다.
#
# CST 경로는 CST의 동적 라이브러리를 찾는 데 필요합니다(내부 BSAFE 암호화 라이브러리도 로드함).
# LD_LIBRARY_PATH의 첫 번째 항목이어야 하며, 그렇지 않으면 라이브러리를 로드하지 못합니다.
# CST에는 자체 BSAFE 라이브러리가 함께 제공됩니다. CST BSAFE 라이브러리 버전은 제품의 다른 구성 요소에서 사용하는 BSAFE 라이브러리와 동일
할 수도 있고 아닐 수도 있습니다.
## 라이브러리 경로가 정의된 곳입니다. ###
linux86w)
NSR_LIBS=/usr/lib/nsr/lib64/cst:/usr/lib/nsr/lib64;
2) 시작 스크립트를 사용하지 않는 경우 nsrexecd를 시작하기 전에 LD_LIBRARY_PATH를 사용하여 라이브러리 위치를 내보내야 합니다.
# export LD_LIBRARY_PATH=/usr/lib/nsr/lib64/cst:/usr/lib/nsr/lib64
2.1) ldd를 실행합니다. 모든 종속 라이브러리를 찾아야 합니다.
# ldd /usr/sbin/nsrexecd
linux-vdso.so.1 => (0x00007ffd2fc72000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f41e8660000)
libosysrtxml.so => /usr/lib/nsr/lib64/cst/libosysrtxml.so (0x00007f41e84ab000)
libCSP-LDAP.so => /usr/lib/nsr/lib64/cst/libCSP-LDAP.so (0x00007f41e832d000)
libCSP-LDAPClient.so => /usr/lib/nsr/lib64/cst/libCSP-LDAPClient.so (0x00007f41e8100000)
libCSP-lb.so => /usr/lib/nsr/lib64/cst/libCSP-lb.so (0x00007f41e7fd9000)
libCSP-C.so => /usr/lib/nsr/lib64/cst/libCSP-C.so (0x00007f41e7e26000)
libCSP-XML.so => /usr/lib/nsr/lib64/cst/libCSP-XML.so (0x00007f41e7bfe000)
libCSP-RT.so => /usr/lib/nsr/lib64/cst/libCSP-RT.so (0x00007f41e7a8f000)
libCSP.so => /usr/lib/nsr/lib64/cst/libCSP.so (0x00007f41e78fe000)
libCSPI.so => /usr/lib/nsr/lib64/cst/libCSPI.so (0x00007f41e779c000)
libCST-Admin.so => /usr/lib/nsr/lib64/cst/libCST-Admin.so (0x00007f41e765c000)
librt.so.1 => /lib64/librt.so.1 (0x00007f41e7453000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f41e7236000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f41e6f2d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f41e6cb4000)
libc.so.6 => /lib64/libc.so.6 (0x00007f41e6938000)
/lib64/ld-linux-x86-64.so.2 (0x00007f41e889a000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f41e6720000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f41e6509000)
2.2) 이제 nsrexecd를 시작합니다.
# /usr/sbin/nsrexecd
# ps -fe | grep nsr
root 46630 1 0 23:43 ? 00:00:00 /usr/sbin/nsrexecd
root 46640 45042 0 23:43 pts/0 00:00:00 grep nsr