2011-08-16 4 views
2

내가 사자에 DB2를 설치하려면이 질문/대답을 사용 : 내 데이터베이스를 구성한 후 How do I install IBM DB2 Express-C on Mac OS X 10.7 Lion?ibm_db 또는 PyDB2 Python 모듈을 Mac OS X 10.7 Lion의 DB2와 함께 사용하려면 어떻게합니까?

, 나는 쿼리를 실행하려면 명령 줄에서 DB2를 사용할 수,하지만 파이썬 모듈은 IBM_DB와 PyDB2 모두 가져 오기에 실패 다음과 같은 오류 :

>>> import ibm_db 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: dlopen(/Library/Python/2.7/site-packages/ibm_db-1.0.4-py2.7-macosx-10.7-intel.egg/ibm_db.so, 2): Symbol not found: _dsIsDirServiceRunning 
Referenced from: /Users/<username>/sqllib/lib64/libdb2.dylib 
Expected in: /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService 

가 어떻게이 문제를 해결하고 IBM_DB 및 PyDB2이 사자에 DB2 제대로 작동받을 수 있나요?

편집 : 답변

로 이동 대답

답변

1
당신이 DYLD_LIBRARY_PATH을 변경하지 않아도 당신은 DirectoryService.framework의 복사 된 버전을보고 install_name_tool를 사용하여 DB2 라이브러리를 변경할 수 있습니다

전체 신용는 다음에 간다, 나는 단순히 가진이 스레드를 업데이트하고 Lion에 db2/ibm_db를 설치하고이 스레드를 Google을 통해 최고의 조회수 중 하나로 발견하는 과정을 거쳤습니다.다른 옵션

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=238136&start=30&tstart=0

여기에 설명 :

http://www.ibm.com/developerworks/forums/message.jspa?messageID=14604855#14604855

대답 (상기 스레드가 사라)

복사 소 레오 DirectoryService.framework

/opt/SL_Frameworks/DirectoryService.framework 

그런 다음

cd /opt/IBM/db2/V9.5/ 
install_name_tool -change /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService /opt/SL_Frameworks/DirectoryService.framework/Versions/A/DirectoryService lib64/libdb2sec.dylib 
install_name_tool -change /System/Library/Frameworks/DirectoryService.framework/Versions/A/DirectoryService /opt/SL_Frameworks/DirectoryService.framework/Versions/A/DirectoryService lib64/libdb2.dylib 

참조 된 게시물

libdb2e.dylib 

그러나, 나는 단지 IBM_DB 파이썬 모듈을 사용하기 위해 DB2 클라이언트를 설치 한 세 번째 라이브러리를 변경한다고 언급이 라이브러리는 존재하지 않습니다.

+0

확인 된이 나를 위해 일했다. 그것은 훨씬 더 깨끗한 해결책이기도합니다. 감사합니다. – drootang

+0

Mountain Lion에서 테스트하기 위해 IBM에서 Mac 클라이언트를 다시 다운로드했습니다. 이것은 수정없이 작동하는 것 같습니다 (아마 지난해 어느 시점에 패치되었습니다) – Chris

2

답변 :

문제는 DirectoryService의 프레임 워크의 특정 기호가 마침내 (는 10.2에서 사용되지 않습니다) 사자에 제거한다는 것입니다. DB2 Express-C가 설치 한 libdb2.dylib는이 함수를 호출하려고 시도하며 파이썬 모듈을 가져올 때 오류를 발생시킵니다.

이 문제를 해결하려면 이전 버전의 DirectoryService 프레임 워크를 연결하도록 환경을 구성해야합니다. 이렇게하려면 Snow Leopard를 설치해야합니다 (이전 버전에서는 작동 할 수 있지만 아직 테스트하지 않았기 때문에 사자가 아닌 최신 버전을 원할 것입니다). 당신은 DirectoryService의 프레임 워크를 여기에 설치 찾을 수 :

/System/Library/Frameworks/DirectoryService.framework/ 

복사하여 사자 설치에서 원하는 위치에 스노우 레오파드 설치에서 디렉토리가. 이 예를 들어, 나는 ~에 디렉토리에 이름 OldFrameworks을 DirectoryService.framework 디렉토리를 복사 :

export DYLD_LIBRARY_PATH=${HOME}/OldFrameworks/DirectoryService.framework/Versions/Current/:${DYLD_LIBRARY_PATH} 

모든 환경에서 :

~/OldFrameworks/DirectoryService.framework/ 

실제 라이브러리의 경로를 포함 할 $DYLD_LIBRARY_PATH을 변수 환경 설정 위의 명령을 수행하는 명령은 파이썬이 ibm_db 또는 PyDB2를 가져올 수 있도록 구성됩니다. .profile, .bashrc 등에 추가하여 환경을 영구적으로 구성하십시오. 하지만, 이것은 을 의미합니다. 설정된 환경에서 실행 된 모든 명령은 Snow Leopard 버전의 DirectoryService와 연결을 시도합니다. 이것은 잠재적으로 다른 도구에서 오류를 일으킬 수 있습니다 (아직 어떤 문제가 발생했습니다). 필요한 경우에만 쉘에서 DYLD_LIBRARY_PATH를 설정하는 것이 현명합니다.