OpenSUSE 13.2 에서 python 개발환경을 구성할 경우에 거쳐가야 할 몇 가지 단계들이 있다. 아마도 대다수 OpenJDK를 채택한 Linux들에도 해당될 듯 한데, Pycharm이 Linux를 위한 구현을 java 로 하였기 때문에 발생하는 일종의 패키지 충돌 문제를 만나게 된다.
다시 말하면, Opensource 진영에서 채택한 OpenJDK는 OpenSUSE 뿐 아니라 Ubuntu 등 대다수 Open Linux 배포판들이 java 플랫폼을 위해 기본으로 포함하고 있다. 그러나 Linux용 Pycharm은 Oracle-Sun jdk/jre 기반으로 만들어져 있으며, 이 문제는 update-alternatives 라는 유틸리티로 극복할 수 있다. 이를 잘 활용하면, 서로 다른 버전의 gcc가 각각 특정 라이브러리에 국한되어 컴파일 되어야 하는 상황에 대한 훌륭한 솔루션이 되기도 한다.
본 포스팅에서 다루어 나가려 하는 단계는 간단히 다음과 같다. 아래에 다루는 내용은 OpenSUSE 뿐 아니라 대다수 linux 배포판에서 적용 가능하며, 마지막 부분의 pycharm 설치 과정은 pycharm 새버전을 설치 또는 업그레이드하는 과정으로 유용하게 참조될 수 있다(pycharm 5.0.1 에서도 적용 가능 확인. 2015/12/7).
* Oracle jdk 를 다운로드하고 설치
* update-alternatives 설정으로 문제 해결
* pycharm 설치
Oracle jdk 8을 다운로드하고 설치
* Oracle jdk 8(rpm) 를 다운로드 한다(☞가기)(참고로 Oracle은 JDK 7에 대해서는 더 이상 지원을 하지 않겠다고 밝힌 바 있다. 2015년 현재 다운로드가능한 버전은 8u45 이다).
* 주의: ubuntu 15.* 부터는 rpm 으로 설치가 되지 않으니 여기 를 참조하여 ppa repository 를 등록하여 설치하여야 한다
$ su -
# java -version -> 현재 설치 된 jdk가 Openjdk인지 확인
# rpm -i --nodeps jdk-8u45-linux-x64.rpm -> nodeps 옵션이 없으면 기존 OpenJDK 와의 의존성 문제로 설치가 실패됨에 유의
Unpacking JAR files...
rt.jar...
jsse.jar...
charsets.jar...
tools.jar...
localedata.jar...
jfxrt.jar...
plugin.jar...
javaws.jar...
deploy.jar...
update-alternatives 설정으로 충돌 문제 해결
* JDK 패키지 내에 포함 된 실행파일 들(java, javadoc, jar, javap, javac, javaws, javah, jarsigner)에 대해 동일한 우선순위(1551) 를 지정하여 update-alternatives 를 수행한다.
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_45/bin/java 1551
# update-alternatives --install /usr/bin/javadoc javadoc /usr/java/jdk1.8.0_45/bin/javadoc 1551
# update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.8.0_45/bin/jar 1551
# update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.8.0_45/bin/javap 1551
# update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.8.0_45/bin/javac 1551
# update-alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.8.0_45/bin/javaws 1551
# update-alternatives --install /usr/bin/javah javah /usr/java/jdk1.8.0_45/bin/javah 1551
# update-alternatives --install /usr/bin/jarsigner jarsigner /usr/java/jdk1.8.0_45/bin/jarsigner 1551
* display option으로 java 실행파일에 현재 설정된 alternatives 가 확인 가능하며, config option으로 디폴트 버전을 스위칭할 수도 있다.
# update-alternatives --display java
java - auto mode
link currently points to /usr/java/jdk1.8.0_45/bin/java
/usr/java/jdk1.8.0_45/bin/java - priority 1551
/usr/lib64/jvm/jre-1.5.0-gcj/bin/java - priority 1500
slave jre: /usr/lib64/jvm/jre-1.5.0-gcj
slave jre_exports: /usr/lib64/jvm-exports/jre-1.5.0-gcj
slave rmiregistry: /usr/lib64/jvm/jre-1.5.0-gcj/bin/rmiregistry
Current 'best' version is '/usr/java/jdk1.8.0_45/bin/java'.
# update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/java/jdk1.8.0_45/bin/java 1551 auto mode
1 /usr/java/jdk1.8.0_45/bin/java 1551 manual mode
2 /usr/lib64/jvm/jre-1.5.0-gcj/bin/java 1500 manual mode
* root 아닌 일반 유저(python 개발 계정)으로 전환하여, java 환경 변수를 설정해 둔다
$ cd
$ vi .bashrc -> 아래 라인을 스크립트 상단에 추가
export JAVA_HOME=/usr/java/jdk1.8.0_45
$ source .bashrc
$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Pycharm 4.5.1 community edition 설치 및 설정
* pycharm 4.5.1 패키지 파일을 다운로드(☞가기)하고 설치한다. 작업의 편의를 위해, 반드시 일반 유저(개발자 계정)으로 진행함에 유의하자.
$ tar xvzf pycharm-community-4.5.1.tar.gz -C /tmp/
$ sudo su -c "chown -R root:root /tmp/pycharm*"
$ sudo rm -rf /opt/pycharm-community/ ==> 업그레이드일 경우
$ sudo rm /usr/local/bin/pycharm /usr/local/bin/inspect ==> 업그레이드일 경우
$ sudo mv /tmp/pycharm-community* /opt/pycharm-community
$ sudo su -c "ln -s /opt/pycharm-community/bin/pycharm.sh /usr/local/bin/pycharm"
$ sudo su -c "ln -s /opt/pycharm-community/bin/inspect.sh /usr/local/bin/inspect"
$ pycharm &
- Barracuda -
'Technical > Development' 카테고리의 다른 글
Redis, Sentinel 고가용성(HA) 설정과 운용방법, Python Client example (0) | 2015.07.08 |
---|---|
Python GUI 프로그래밍을 위한 PySide 1.2.2, Linux/Windows 에 설치하기 (0) | 2015.06.14 |
Python - pysnmp, pymongo, python-mysql 작업 환경(OpenSuse 11.3) (0) | 2012.11.19 |
PHP5 + lighttpd fastcgi + mongodb + mysql(openeuse 12.1) 개발/운영 환경 설정 (0) | 2012.10.24 |
PHP5 + lighttpd fastcgi + mongodb + mysql(openeuse 11.3) 개발/운영 환경 설정 (0) | 2012.10.24 |