레이블이 IBM DB2 client인 게시물을 표시합니다. 모든 게시물 표시
레이블이 IBM DB2 client인 게시물을 표시합니다. 모든 게시물 표시

2018년 4월 16일 월요일

ppc64le Ubuntu python3 환경에서 IBM DB2 client setup 방법


결론부터 말씀드리면, 아래 Google Drive에 올려놓은 ibm_db-2.0.8.tar.gz를 download 받으셔서 아래와 같이 설치하시면 됩니다.

$ pip install --no-index --find-links=file://"파일올려놓은디렉토리" ibm_db==2.0.8

https://drive.google.com/open?id=1ogehW-IkZJHF7emG8Db2XzRRNlznJOwi

좀더 자세한 설명은 아래와 같습니다.

기본적으로 python3 환경에서 IBM DB2 client의 setup하는 방법은 아래를 따르시면 됩니다.

https://www.ibm.com/developerworks/community/blogs/96960515-2ea1-4391-8170-b0515d08e4da/entry/Installing_Python_ibm_db_driver?lang=en


그런데 제가 해보니 다음과 같이 이런저런 error가 납니다.  (Python2에서는 잘 됩니다만, python3에서만 error가 나네요.)

minsky@minsky:~$ pip install ibm_db
Collecting ibm_db
  Using cached ibm_db-2.0.8.tar.gz
Building wheels for collected packages: ibm-db
...
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-b5m2e82l/ibm-db/setup.py", line 17, in <module>
        os.rename('tests','test_2')
    OSError: [Errno 39] Directory not empty: 'tests' -> 'test_2'

    ----------------------------------------
Command "/home/minsky/anaconda3/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-b5m2e82l/ibm-db/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-3hxlsbb8/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-b5m2e82l/ibm-db/


이는 이 속에 포함된 setup.py 파일 속의 tests, test_2와 같은 일부 directory 명명이 잘못된 것 외에도, 기본적으로 DB2 client가 현재는 ppc64 (big endian)에 대해서만 공식 지원되고 ppc64le (little endian)에 대해서는 setup.py 내에 언급이 없기 때문입니다.

그러나 실제로는 ppc64_odbc_cli.tar.gz 뿐만 아니라 아래처럼 ppc64le_odbc_cli.tar.gz도 제공됩니다.  즉, ppc64le에 대해서도 설치가 가능합니다.

https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/ppc64le_odbc_cli.tar.gz

또한 이를 반영하는 임시 patch가 아래 URL에 제공되고 있습니다.

이를 이용하여, 좀더 간편하게 IBM DB2를 설치할 수 있도록 아래와 같이 ibm_db-2.0.8.tar.gz를 수정해서 올렸습니다.

먼저, PYPI repository로부터 ibm_db source package를 download 받습니다.

minsky@minsky:~$ pip download ibm_db
Collecting ibm_db
  Downloading ibm_db-2.0.8.tar.gz (689kB)
    100% |████████████████████████████████| 696kB 1.5MB/s
  Saved ./ibm_db-2.0.8.tar.gz
Successfully downloaded ibm-db

이걸 풀어서 아래 URL에 제시된 patch 내용에 따라 setup.py를 편집합니다.

https://github.com/ibmdb/python-ibmdb/issues/292


minsky@minsky:~$ tar -zxf ibm_db-2.0.8.tar.gz

minsky@minsky:~$ cd ibm_db-2.0.8

minsky@minsky:~/ibm_db-2.0.8$ vi setup.patch
...저 위 URL 내용에 따라 편집합니다. 

편집을 마친 뒤 다시 이걸 tar.gz으로 말아둡니다.

minsky@minsky:~/ibm_db-2.0.8$ cd ..

minsky@minsky:~$ tar -zcf ibm_db-2.0.8.tar.gz ibm_db-2.0.8

이제 아래와 같이 pip install로 local directory에 있는 ibm_db-2.0.8.tar.gz 파일을 이용해 install하면 됩니다.

minsky@minsky:~$ pip install --no-index --find-links=file:///home/minsky ibm_db==2.0.8
Collecting ibm_db==2.0.8
Building wheels for collected packages: ibm-db
  Running setup.py bdist_wheel for ibm-db ... done
  Stored in directory: /home/minsky/.cache/pip/wheels/ed/cd/b9/f3b516860b310ca7806e09e423a4ecb8d076ee023dea5d5367
Successfully built ibm-db
Installing collected packages: ibm-db
Successfully installed ibm-db-2.0.8

확인은 아래와 같이 하실 수 있습니다.

minsky@minsky:~$ pip list --format=columns | grep ibm-db
ibm-db                             2.0.8