리눅스 시스템에서 여러 가지 버전의 패키지를 설치하여 사용 할 경우가 많음. 이럴 때 alternatives
커맨드라인 툴을 이용하여 여러 버전의 패키지를 관리하여 필요에 따라 유동적으로 원하는 버전 선택 가능
alternatives는 심볼릭 링크를 생성, 제거, 관리, 조회 할 수 있는 기능을 제공하는 GNU 라이센스의 커맨드라인 툴
현재 alternatives 설정에는 jdk7, jdk8 가 설치되어 있음
[root@localhost java]# alternatives --config java
심볼릭 링크 생성하기 ( jdk 11 설치과정 생략 )
[root@localhost java]# alternatives --install /usr/bin/java java /usr/local/java/jdk-11.0.9/bin/java 1
Redhat 기준 alternatives 는 기본적으로
/etc/alternatives<name>
의 경로에 링크가 생성되고 priority, link, path 등 관련정보를/var/lib/alternatives/<name>
의 경로에 저장
① -> <link> : 심볼릭 링크의 경로
② -> _<name>_ : alternatives 에서 관리 할 심볼릭 링크 그룹명
③ -> <path> : 패키지의 절대 경로
④ -> <priority> : 링크 그룹 내에서 우선순위 지정. 정수로 입력하며 클 수록 우선순위
설정 값을 확인하면 이전에는 등록되지 않았던 java 그룹 내 jdk11 버전 확인 가능하며 목록 내 자바 버전으로 수정 가능
JAVA_HOME 환경변수 설정을 위해 /etc/profile
파일을 열어 하단에 명령어 추가 후 변경사항 반영
[root@localhost java]# vi /etc/profile
# add line
export JAVA_HOME=$(readlink -f /usr/bin/java) | sed "s:bin/java::")
[root@localhost java]# . /etc/profile
readlink -f
의 의미는 심볼릭 링크에서 원본파일을 추출하는 명령어
포스트 내용대로 진행했다면readlink -f /usr/bin/java
명령어의 결과는/usr/local/java/jdk-11.0.9/bin/java
sed
는 유닉스에서 텍스트를 변환하기 위한 프로그램
s
: 행마다 처음 검색된 텍스트를 원하는 텍스트로 바꿈
:
: 토큰을 기준으로 bin/java 텍스트를 공백으로 치환
포스트 내용대로 진행했다면JAVA_HOME
환경변수에/usr/local/java/jdk-11.0.9/
텍스트 대입