2020년 5월 28일 목요일

Pyproj 2.6.1 버전 설치하기 (ppc64le)

pyproj 최신 버전을 설치하기 위해서는 proj가 필요한데, Anaconda, Pypi 에서도 아직 proj 설치용 파일이 없으므로 소스에서 빌드하여 설치해야 합니다.

pyproj를 설치하기 위한 가이드는 아래 링크에 나와있으며,
https://pyproj4.github.io/pyproj/stable/installation.html

pip intall pyproj==2.6.1 명령어로도 설치가 가능합니다. 단, 위에서 언급했듯이 prerequisites 으로 필요한 PROJ를 요구 버전에 따라 빌드해야 합니다. pyproj 최신 버전인(2020/05) 2.6.1 의 경우, proj 6.2 버전 이상을 요구합니다.

PROJ를 빌드하기 위해 소스 코드를 받습니다. 외부망 연결이 되어있는 경우 git clone 명령어로 받거나, 안되어 있는 경우는 github에서 소스코드를 zip 파일로 다운로드 받아서 서버에 올려둡니다.
[root@p1214-met1 ~]# yum install git
[root@p1214-met1 ~]# git clone https://github.com/OSGeo/PROJ.git
[root@p1214-met1 ~]# cd PROJ
[root@p1214-met1 PROJ]# git checkout 6.2

혹은
[root@p1214-met1 ~]# unzip PROJ-6.2.zip
[root@p1214-met1 ~]# cd PROJ

이후에는 동일하게 진행합니다.

[root@p1214-met1 PROJ]# yum install automake libtool autoconf devtoolset-7-gcc-c++.ppc64le
[root@p1214-met1 ~]# export PATH=/opt/rh/devtoolset-7/root/usr/bin:$PATH

[root@p1214-met1 PROJ]# ./autogen.sh
Running aclocal
Running autoheader
Running libtoolize
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `.'.
libtoolize: copying file `./ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: copying file `m4/libtool.m4'
libtoolize: copying file `m4/ltoptions.m4'
libtoolize: copying file `m4/ltsugar.m4'
libtoolize: copying file `m4/ltversion.m4'
libtoolize: copying file `m4/lt~obsolete.m4'
Running automake
configure.ac:20: installing './config.guess'
configure.ac:20: installing './config.sub'
configure.ac:10: installing './install-sh'
configure.ac:10: installing './missing'
src/Makefile.am: installing './depcomp'
parallel-tests: installing './test-driver'
Running autoconf
======================================
Now you are ready to run './configure'
======================================

빌드 진행 시에, sqlite3 을 사용합니다. sqlite3은 미리 설치되어 있어야 하며, conda 명령어를 이용하여 쉽게 설치할 수 있습니다. 테스트 환경의 경우, 이미 3.30.1 버전의 sqlite가 설치되어 있습니다.
[root@p1214-met1 PROJ]# conda list sqlite
# packages in environment at /opt/anaconda3:
#
# Name                    Version                   Build  Channel
sqlite                    3.30.1               h7b6447c_0

설치된 경로를 찾습니다.
[root@p1214-met1 PROJ]# find / -name libsqlite3.so
/opt/anaconda3/pkgs/sqlite-3.23.1-he433501_0/lib/libsqlite3.so
/opt/anaconda3/pkgs/sqlite-3.30.1-h7b6447c_0/lib/libsqlite3.so
/opt/anaconda3/lib/libsqlite3.so

찾아낸 경로를 참조하여, 아래 ./configure 명령의 파라미터로 SQLITE3_CFLAGS (include 경로)와 SQLITE3_LIBS(lib 경로) 를 적용합니다. 아래의 포맷으로 작성하여 제출하셔야 에러 없이 진행됩니다. 설치할 특정 경로를 지정하는 경우, --prefix=/경로 를 configure 뒤에 붙여줍니다. 별도 설정이 없는 경우 /usr/local에 설치됩니다.

[root@p1214-met1 PROJ]# ./configure SQLITE3_CFLAGS="-I/opt/anaconda3/pkgs/sqlite-3.30.1-h7b6447c_0/include" SQLITE3_LIBS="-L/opt/anaconda3/pkgs/sqlite-3.30.1-h7b6447c_0/lib -lsqlite3"

[root@p1214-met1 PROJ]# make
[root@p1214-met1 PROJ]# make install
[root@p1214-met1 PROJ]# make check

별도 ./configure 시에 별도 prefix를 정해주지 않으면, 기본으로 /usr/local에 설치됩니다. 경로를 확인해보면 설치가 완료된 것을 보실 수 있습니다.
[root@p1214-met1 PROJ]# find /usr/local -name proj
/usr/local/bin/proj
/usr/local/include/proj
/usr/local/share/proj

PROJ_DIR 경로를 지정해줍니다.
[root@p1214-met1 PROJ]# export PROJ_DIR=/usr/local
[root@p1214-met1 PROJ]# PROJ_WHEEL=true

pip로 pyproj를 설치합니다. PROJ_DIR 경로에서 자동으로 proj를 참조하게 됩니다.
[root@p1214-met1 PROJ]# pip install pyproj==2.6.1
Collecting pyproj==2.6.1
  Using cached https://files.pythonhosted.org/packages/33/2a/44d5631fe4ad9396a3eecdb4de36bc0cbc4b9893c63e4552413bd97d3465/pyproj-2.6.1.tar.gz
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: pyproj
  Building wheel for pyproj (PEP 517) ... done
  Created wheel for pyproj: filename=pyproj-2.6.1-cp36-cp36m-linux_ppc64le.whl size=1350200 sha256=5b7fbb56857978e9071513f1a0845a46a5536e0069b8a000a58d0e613be53bbd
  Stored in directory: /root/.cache/pip/wheels/af/57/61/9555392abaa4d863604b440ce7279400833b4c5c46b708c88e
Successfully built pyproj
Installing collected packages: pyproj
  Found existing installation: pyproj 1.9.5.1
    Uninstalling pyproj-1.9.5.1:
      Successfully uninstalled pyproj-1.9.5.1
Successfully installed pyproj-2.6.1

conda에서 pyproj설치가 완료되었는지 확인합니다.
[root@p1214-met1 PROJ]# conda list pyproj
# packages in environment at /opt/anaconda3:
#
# Name                    Version                   Build  Channel
pyproj                    2.6.1                    pypi_0    pypi