2022. 2. 18. 00:43ㆍLinux/Basic
- JDK 17 설치 및 JAVA_HOME 설정
- 다른 버전의 JDK 설치 (JDK 1.8)
- 기본 JDK 변경하기
1. JDK 17 설치 및 JAVA_HOME 설정
1.1. JDK 17 조회
sudo dnf list "*java-17-openjdk*"
Repository ol8_developer_EPEL is listed more than once in the configuration Last metadata expiration check: 3:35:39 ago on Thu 17 Feb 2022 10:16:07 AM GMT. Available Packages java-17-openjdk.src 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-demo.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-devel.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-headless.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-javadoc.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-javadoc-zip.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-jmods.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-src.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream java-17-openjdk-static-libs.x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream
1.2. JDK 17 설치
sudo dnf install java-17-openjdk-devel.x86_64
Repository ol8_developer_EPEL is listed more than once in the configuration Last metadata expiration check: 3:37:45 ago on Thu 17 Feb 2022 10:16:07 AM GMT. Dependencies resolved. ================================================================================= Package Arch Version Repository Size ================================================================================= Installing: java-17-openjdk-devel x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream 5.1 M Installing dependencies: alsa-lib x86_64 1.2.5-4.el8 ol8_appstream 489 k copy-jdk-configs noarch 4.0-2.el8 ol8_appstream 30 k giflib x86_64 5.1.4-3.el8 ol8_appstream 51 k graphite2 x86_64 1.3.10-10.el8 ol8_appstream 122 k harfbuzz x86_64 1.7.5-3.el8 ol8_appstream 295 k java-17-openjdk x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream 245 k java-17-openjdk-headless x86_64 1:17.0.2.0.8-4.el8_5 ol8_appstream 41 M javapackages-filesystem noarch 5.3.0-1.module+el8+5136+7ff78f74 ol8_appstream 30 k lcms2 x86_64 2.9-2.el8 ol8_appstream 164 k libXcomposite x86_64 0.4.4-14.el8 ol8_appstream 28 k libXi x86_64 1.7.10-1.el8 ol8_appstream 49 k libXtst x86_64 1.2.3-7.el8 ol8_appstream 22 k libfontenc x86_64 1.1.3-8.el8 ol8_appstream 37 k libjpeg-turbo x86_64 1.5.3-12.el8 ol8_appstream 157 k lua x86_64 5.3.4-12.el8 ol8_appstream 192 k ttmkfdir x86_64 3.0.9-54.el8 ol8_appstream 62 k tzdata-java noarch 2021e-1.el8 ol8_appstream 191 k xorg-x11-font-utils x86_64 1:7.5-41.el8 ol8_appstream 104 k xorg-x11-fonts-Type1 noarch 7.5-19.el8 ol8_appstream 522 k Transaction Summary ================================================================================= Install 20 Packages Total download size: 49 M Installed size: 205 M Is this ok [y/N]:
1.3. java 설치 경로 조회
which를 이용하여 java 명령어의 위치를 조회하고
which java
/usr/bin/java
readlink 명령어로 링크가 가리키는 주소를 조회합니다.
readlink /usr/bin/java
/etc/alternatives/java
dirname 명령어를 이용하여 java 명령어가 위치한 디렉토리를 조회합니다.
dirname $(readlink /etc/alternatives/java)
/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin
위의 결과값 중, /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64
가 $JAVA_HOME에 해당됩니다.
이 부분을 직접 /etc/profile
에 설정해도 되지만, 위의 명령어를 활용하여 환경변수에 설정해두면, 나중에 기본 JDK를 변경하더라도 동적으로 JAVA_HOME도 자동으로 반영될 수 있습니다.
1.4. JAVA_HOME 설정하기
dirname은 현재 가리키고 있는 파일 또는, 디렉토리가 위치한 디렉토리를 리턴하는 명령어입니다.
따라서 1.3 에서 이용한 명령어에서 dirname을 한번더 감싸면 JAVA_HOME이 됩니다.
dirname $(dirname $(readlink -f $(readlink -f $(which java))))
/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64
이점을 활용하여 환경변수를 설정해주고,
sudo vim /etc/profile
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(readlink -f $(which java))))) export PATH=$PATH:$JAVA_HOME/bin
수정사항을 반영해줍니다.
source /etc/profile
그리고 JAVA_HOME을 조회해봅니다.
원하는 결과가 잘 출력되는 것을 확인해 볼 수 있습니다.
echo $JAVA_HOME /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64
2. 다른 버전의 JDK 설치 (JDK 1.8)
지금의 상태에서 java 버전을 조회하면 위에서 설치했던 openjdk 17버전이 출력됩니다.
java -version
openjdk 17.0.2 2022-01-18 LTS OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS) OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)
이 상황에서, java 1.8 버전을 설치하면 어떻게 될까?
java 1.8 패키지 목록을 조회해봅니다.
sudo dnf list "*java-1.8.0-openjdk*"
Repository ol8_developer_EPEL is listed more than once in the configuration Last metadata expiration check: 3:54:06 ago on Thu 17 Feb 2022 10:16:07 AM GMT. Available Packages java-1.8.0-openjdk.src 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-accessibility.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-demo.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-devel.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-headless.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-javadoc.noarch 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-javadoc-zip.noarch 1:1.8.0.322.b06-2.el8_5 ol8_appstream java-1.8.0-openjdk-src.x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream
java-1.8.0-openjdk-devel.x86_64를 설치합니다.
sudo dnf install java-1.8.0-openjdk-devel.x86_64
Repository ol8_developer_EPEL is listed more than once in the configuration Last metadata expiration check: 3:55:24 ago on Thu 17 Feb 2022 10:16:07 AM GMT. Dependencies resolved. ================================================================================= Package Arch Version Repository Size ================================================================================= Installing: java-1.8.0-openjdk-devel x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream 9.8 M Installing dependencies: java-1.8.0-openjdk x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream 342 k java-1.8.0-openjdk-headless x86_64 1:1.8.0.322.b06-2.el8_5 ol8_appstream 34 M Transaction Summary ================================================================================= Install 3 Packages Total download size: 44 M Installed size: 159 M Is this ok [y/N]:
java 1.8을 설치한 후 다시 java 버전을 조회해보면 가장 최근에 설치한 1.8 버전으로 출력되는 것을 확인해 볼 수 있습니다.
java -version
openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
3. 기본 JDK 변경하기
3.1. java 심볼릭 링크 변경
JDK 17을 기본 JDK로 변경하고 싶다면 어떻게 해야할까.
alternatives --config 명령어를 이용하면 여러 버전으로 설치된 명령어 패키지 중 기본으로 설정할 패키지를 변경할 수 있습니다.
sudo alternatives --config java
There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- 1 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java) *+ 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java) Enter to keep the current selection[+], or type selection number:
현재 적용중인 패키지에는 + 표시가 되어있습니다.
변경하고 싶다면 변경하고 패키지의 Selection 숫자를 입력하고, 변경하고 싶지않다면 Enter를 입력하면 됩니다.
1번 패키지로 변경하고 다시 java 버전을 조회해봅니다.
java -version
openjdk version "17.0.2" 2022-01-18 LTS OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS) OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)
JAVA_HOME 역시 변경된 것을 확인할 수 있습니다.
echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64
3.2. 참고
alternatives --config 명령어로 java 패키지 상태를 다시 확인해보면, jdk 17에 + 기호가 있고, jdk 1.8에 * 기호가 설정되어 있습니다.
sudo alternatives --config java
There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- + 1 /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java * 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java) Enter to keep the current selection[+], or type selection number:
--config 는 java 명령어의 대한 심볼릭 링크는 변경해주지만 (/etc/alternatives/java
) 우선순위는 변경되지 않기 때문입니다.
* 은 우선순위(priority)가 높은 명령어
+ 는 java명령어가 가리키는(simbolic link 설정된) 명령어
만약, 패키지의 우선순위를 바꾸고 싶다면 어떻게 해야할까?
패키지 우선순위 변경은 굳이 하지 않아도 되는 기능입니다.
priority를 수정하고 싶은 경우에만 아래를 참고해주세요.
3.2.1. 우선순위 체크
먼저 두 패키지의 우선순위를 확인해봅니다.
alternatives --display java
java - status is manual. link currently points to /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java - family java-17-openjdk.x86_64 priority 1 ... /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java - family java-1.8.0-openjdk.x86_64 priority 1800322 ... Current 'best' version is /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java
jdk 17은 priority 1, jdk 1.8은 priority 1800322로 best 버전은 jdk 1.8로 되어있습니다.
3.2.2. 우선순위 변경
jdk 17의 우선순위를 jdk 1.8보다 높게 설정해봅니다.
sudo alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java 1900322
3.2.3. 결과
이제는 alternatives --config 명령어 결과가 둘다 jdk 17로 변경되었습니다.
alternatives --config java
There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 1 /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java 2 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
alternatives --display 결과 역시 best package로 jdk 17이 나옵니다.
alternatives --display java
java - status is manual. link currently points to /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java - priority 1900322 ... /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java - family java-1.8.0-openjdk.x86_64 priority 1800322 ... Current 'best' version is /usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java.
++
- alternatives를 이용한 java 버전 관리
- How to install JDK 17 in CentOS 8
- How to install JDK 17 in Oracle Linux 8
- how to change default jdk in centos8
'Linux > Basic' 카테고리의 다른 글
[Linux] TCP Wrapper를 이용한 ip별 접근제어 설정 (0) | 2022.08.05 |
---|