보통은 사용자 마다 (리눅스의 User)

.bash_profile 등의 사용자 초기 실행설정에서 

JDK_HOME 이라던가, PATH 등을 정의한다.


 그런데, 한 사용자가 JDK 1.7에서만 돌아가는 프로그램과 JDK 1.8에서만 돌아가는 프로그램 두개를 동시에 돌리게 된다면 어떻게 될까?

둘 중 하나는 지원되지 않는 버전일테고, 그 지원되지 않는 버전일 경우 오류가 발생한다.(UnsupportedClassVersionError)


 이를 해결하기 위해서는 각 프로그램은 각각 다른 패스를 바라볼 필요가 있다.

즉, 패스 관리를 프로그램 별로 하는 것이다.

만약 Java 1.7, Mysql 4.8 기반의 프로그램 이라면 리눅스의 PATH 변수에 두 실행파일의 경로를 넣어주면 되는것이다.


위 내용을 스크립트로 관리하는 것이 아래 내용이다.



 


아래는 Bitnami 의 Redmine Stacks 에서 실제 사용하는 방법이다.


1. 다음과 같은 파일을 만들어서 PATH 부분에 실행할 경로를 넣는다.  (Bitnami Redmine Stack 의 use_Redmine 파일을 참조하였다.)

#use_Redmine 파일

#!/bin/sh

 

PATH="/home/nanum/BitnamiRedmineStack2.5.2/perl/bin:/home/nanum/BitnamiRedmineStack2.5.2/sqlite/bin:/home/nanum/BitnamiRedmineStack2.5.2/ruby/bin:/home/nanum/BitnamiRedmineStack2.5.2/subversion/bin:/home/nanum/BitnamiRedmineStack2.5.2/postgresql/bin:/home/nanum/BitnamiRedmineStack2.5.2/php/bin:/home/nanum/BitnamiRedmineStack2.5.2/mysql/bin:/home/nanum/BitnamiRedmineStack2.5.2/apache2/bin:/home/nanum/BitnamiRedmineStack2.5.2/common/bin:$PATH"

 

exec /bin/bash --noprofile --norc

 

만약 리눅스에 설치되어 있는 기본 JDK 가 1.5인데 1.6 버전을 쓰고싶다면 

PATH="jdk 경로:$PATH" 를 넣어주면 된다.

 

2.  ./"파일이름" 으로 실행하면 쉘이 바로 실행되는데 이 쉘 안에서 실행하고 싶은 프로그램을 돌리면 된다.


   * export PATH=~~~ 가 아닌 PATH=~~~~ 로 되어있다는 것을 알아둬야한다.

     export 명령어를 안썻으니 위의 PATH는 일회용인 것이다.



ex)

./use_Redmine

./redmineCtrl start


 

 

위 방법을 사용하게 된 계기

Jenkins 를 리눅스에서 실행하는데 버전이 낮아서 오류가 났다.

 

 root 의 암호조차 모르던 상태였기 때문에 위 방법을 사용하여 해결하게 되었다.

 

물론 path를 export 한 뒤에 입력해도 된다. 하지만 위 방법이 더 안정성 있다고 생각되고

 

불필요한 작업을 줄인다고 생각하기에 사용하게 되었다.

 

<파일 내용>

#java1.6.sh

#!bin/sh

PATH="/home/alm/jdk1.6.0_45/bin:$PATH"

exec /bin/bash --noprofile --norc


실행 : ./java1.6.sh

  ./Jenkins.jar



 


+ Recent posts