Simplify

Java JDK 를 설치 프로그램 없이 설치하기 How to set-up (install) JDK on Mac (Linux) 본문

Other/Java

Java JDK 를 설치 프로그램 없이 설치하기 How to set-up (install) JDK on Mac (Linux)

Simplify - Jonghun 2019. 12. 12. 13:32

보통의 경우, 개발 환경을 구축할 때, oracle 홈페이지에서 dmg 파일을 다운로드 받아서 설치하게 됩니다. 물론 이렇게 하면 PATH 에도 등록되고 하니, 편하게 Java를 사용할 수 있다는 장점이 있습니다.

 

그런데 특정 버전에 대해서 테스트를 해야 하거나, 다양한 버전을 기반으로 해서 서로 다른 프로그램들을 실행해야 하는 경우에는 이렇게 root 경로에 설치되는 것이 오히려 더 불편하다. 따라서 zip 등으로 압축된 파일을 다운로드 받아 압축을 해제해서 사용햇었는데,  최근 맥 환경에는 이를 제공하지 않고 있습니다.

 

Minor 버전까지 확실하게 신경써야 하는 경우를 대비하여 이런 방법을 아래와 같이 공유합니다.

 

1. jdk dmg파일 준비

오라클 홈페이지의 archive 다운로드 경로에서 본인이 원하는 버전의 dmg를 다운로드 받습니다.

그리고 해당 디렉토리로 이동합니다. 

 

2. pkg 파일을 추출

7z 등의 강력한(?) 압축 프로그램을 이용하여 해당 dmg 에서 pkg 파일을 추출합니다.

7z x jdk-8u181-macosx-x64.dmg

만약 본인의 Mac에 7zip 이 없다면 dmg 파일을 마운트하여 해당 볼륨 안에서 pkg 파일을 복사합니다.

 

3. pkgutil 로 해당 패키지 풀기

이제 해당 pkg 파일을 풀어 원하는 폴더에 가져다 둡니다. 아래와 같은 명령어를 사용합니다.

pkgutil --expand "JDK 8 Update 181/JDK 8 Update 181.pkg" jdk-pkg-unpacked

우선 Mac에는 기본적으로 pkgutil 이 설치되어 있으니 --expand 옵션을 주고, 해당 pkg 파일명, 그리고 풀어놓을 폴더 명을 입력하여 pkg 파일을 펼칩니다.

 

4. Payload 폴더 unpackage하기

이제 Payload 라는 폴더를 압축 해제하여 원하는 실행 파일들(java, javac, ..)을 얻어냅니다.

tar xvf jdk-pkg-unpacked/jdk180181.pkg/Payload 

 

5. (Optional) 복사 및 PATH 등록

이제 Content/Home 이라는 경로가 보입니다. 이 Home 경로가 JAVA_HOME 경로와 일치합니다. 이제 아래 명령어로 PATH에 등록할 수 있습니다. 

mv Contents/Home ~/jdk180181 
JAVA_HOME="$HOME/jdk180181" and PATH="$PATH:$JAVA_HOME/bin"

만약 저처럼 PATH 등록 조차도 없이, 깔끔하게 사용하고 싶다면 위 5번 과정은 생략하고 사용하시면 됩니다. 

 

이렇게 하면 eclipse 등의 Java 기반 프로그램 역시 문제없이 사용할 수 있습니다. 

(eclipse.ini 에 -vm 옵션으로 넣어줘야 합니다.)

 

 

정확한 이유는 모르겟지만, 이렇게 추출한 폴더를 다른 기기에서 사용하려고 하면 제대로 실행되지 않습니다. 아무래도 pkgutil 을 사용하면서 그 기기만의 무엇인가가 생기는 지는 모르겠습니다. 

 

 

 

출처 : https://blog.mifi.no/2018/08/17/install-java-jdk-on-mac-osx-from-dmg-pkg-without-admin-root/

 

 

 

Comments