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

댓글 없음:

댓글 쓰기