데비안에 Eclipse Temurin JDK 설치하기

In Java by Choi Kyung-sik

Atlassian이 Cloud 중심 전략으로 전환하기 위해 2021년 Confluence, Jira, Bitbucket에 대한 개인용 영구 라이선스(Server) 판매를 중단했고, 기업용인 Data Center 제품도 2029년까지 단계적으로 종료할 예정이다. 이에 따라 개인적으로 사용 중이던 Jira와 Bitbucket은 Gitea로 대체하였다. Confluence는 노션(Notion), 아웃라인(Outline), 옵시디언(Obsidian) 등을 검토해 보았으나 딱히 마음에 드는 대안이 없었다. 다행히 Confluence는 폴백(Fallback) 영구 라이선스라 업그레이드는 불가능하지만 계속 사용할 수 있어 아직 유지하고 있다.

Java에 대한 흥미를 잃어 대체 솔루션으로 교체하게 되면 JDK를 삭제할 예정이었으나, 한동안은 더 필요할 듯하다. 또한 검색을 통해 이전에 작성한 데비안에 AdoptOpenJDK 설치하기 글로 유입되는 경우가 있어, 최신 정보를 공유하고자 기록을 남긴다.

AdoptOpenJDK의 브랜드 변경과 이관

AdoptOpenJDK는 2021년 Eclipse 재단으로 이관되면서 Eclipse Adoptium 프로젝트로 재탄생하였다. 이는 Oracle의 상표권 문제를 해결하고, 공식 호환성 테스트(TCK)를 통과하여 엔터프라이즈 환경에서 더 신뢰할 수 있는 바이너리를 제공하기 위함이다.

  • 상표권 분쟁 회피: ‘OpenJDK’라는 단어는 Oracle의 등록 상표이다. 커뮤니티 프로젝트였던 ‘AdoptOpenJDK’의 규모가 커지자, 법적으로 안전하고 영구적인 이름을 갖기 위해 Eclipse 재단으로 이관하며 이름을 변경해야 했다.
  • Java 공식 인증 (TCK 라이선스 획득): 과거 AdoptOpenJDK는 Oracle과의 라이선스 문제로 ‘자바 호환성 테스트(TCK)’를 공식적으로 수행할 수 없었다. 하지만 Eclipse 재단 산하로 들어가면서 Oracle과 협약을 맺고 TCK 인증을 통과한 ‘공식 호환 Java’를 배포할 수 있게 되었다.

2021년 AdoptOpenJDK 프로젝트가 Eclipse 재단으로 합류하며 Eclipse Adoptium으로 이름이 바뀌었고, Eclipse Temurin이라는 바이너리가 처음 배포되었다. 이후 2023년 7월, 기존에 사용하던 adoptopenjdk.jfrog.io 저장소는 완전히 사용 중단(Deprecated)되었다.

Eclipse Adoptium(어댑티움)은 프로젝트 이름이고 Eclipse Temurin(테무린)은 해당 프로젝트에서 생산하는 JDK 제품 이름이다. TemurinRuntime의 아나그램(철자 순서 바꾸기)이다. (R-u-n-t-i-m-e ↔ T-e-m-u-r-i-n)

AdoptOpenJDK 저장소 정리하기

Eclipse Temurin으로 이관되던 2023년 무렵, apt update 실행 시 다음과 같은 경고 메시지가 발생했었다. 현재는 저장소 자체가 삭제되었을 것으로 보인다.

# apt update
...
W: https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/dists/buster/InRelease 파일을 받는데 실패했습니다  503  Service Temporarily Unavailable [IP: 34.74.126.177 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.

아직 저장소를 정리하지 않았다면 /etc/apt/sources.list/etc/apt/sources.list.d에서 AdoptOpenJDK 저장소 설정을 삭제하자.

AdoptOpenJDK GPG 키는 apt-key add 명령으로 /etc/apt/trusted.gpg 파일에 저장되어 있을 것이다. 다음 명령어로 키 정보를 확인한다.

# apt-key list
...
pub   rsa4096 2019-06-25 [SC] [expires: 2023-06-24]
      5951 8666 C652 3968 B1F8  6530 8AC3 B291 7488 5C03
uid           [ unknown] AdoptOpenJDK <adoptopenjdk@jfrog.com>
sub   rsa4096 2019-06-25 [E] [expires: 2023-06-24]
...

4번째 줄의 전체 핑거프린트(Fingerprint)에서 마지막 8자리를 Key ID로 사용한다. 위 예시에서는 74885C03이 Key ID이다. 다음 명령어로 AdoptOpenJDK 키를 삭제한다.

# apt-key del 74885C03
데비안의 최신 apt 보안 표준

외부 저장소의 GPG 키를 저장하는 곳은 크게 다음 세 가지가 있다.

  1. /etc/apt/trusted.gpg 파일
  2. /etc/apt/trusted.gpg.d/ 디렉터리 내부
  3. /etc/apt/keyrings/ 디렉터리 내부

첫 번째와 두 번째 방식은 보안상 좋지 않아 권장되지 않거나 사용이 중단될 예정이다. trusted.gpg 파일과 trusted.gpg.d 디렉터리 안의 키는 시스템의 모든 저장소에서 해당 키를 무조건 신뢰하기 때문이다.

  • apt-key add 명령어로 trusted.gpg 파일에 추가하던 방법은 사용이 금지된다. Debian 13 "Trixie"부터 apt-key는 제거되어 더 이상 사용할 수 없다.
  • /etc/apt/trusted.gpg.d/ 디렉터리에 넣는 것 또한 권장되지 않는다. rm 명령어로 GPG 키를 편하게 삭제할 수 있다는 장점은 있으나, 여전히 전역 신뢰(Global Trust) 문제로 인해 보안에 좋지 않다.

따라서 별도의 디렉터리인 /etc/apt/keyrings에 GPG 키를 저장하고, sources.list에서 "이 저장소는 오직 이 키로만 인증한다(signed-by)"라고 명시하는 세 번째 방식을 권장하고 있다.

이 권장 방식을 따르고 있는 대표적인 예로 GitHub CLI가 있다. (공식 문서 참조: GitHub CLI Install) GitHub CLI는 /etc/apt/keyrings/githubcli-archive-keyring.gpg 경로에 GPG 키를 생성하며, /etc/apt/sources.list.d/github-cli.list 파일의 내용은 다음과 같다.

deb [arch=amd64 signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main

signed-by 옵션에 GPG 키 경로를 명시적으로 설정한 것을 볼 수 있다.

Eclipse Temurin 설치

Eclipse Temurin 설치 페이지(https://adoptium.net/installation/linux/)에서는 앞서 언급한 두 번째 방식(/etc/apt/trusted.gpg.d/)을 안내하고 있다. 데비안의 최신 권장 방식을 아직 따르고 있지 않은데, 언젠가는 문서가 업데이트될 것으로 보인다. 공식 문서대로 설치해도 사용에는 지장이 없으나, 이 글에서는 데비안의 권장 방식(signed-by)으로 설치하는 방법을 설명한다.

1. 필수 패키지 설치

다음 명령어로 Eclipse Temurin 설치 과정에 필요한 wget, apt-transport-https, gpg 패키지를 설치한다. gpg는 데비안 설치 시 gnupg에 포함되어 이미 설치되어 있을 수 있다.

# apt update
# apt install wget apt-transport-https gpg
2. Eclipse Adoptium GPG 키 설치

패키지의 무결성 검사에 사용하는 Eclipse Adoptium GPG 키를 설치한다. /etc/apt/keyrings 디렉터리에 설치하는 점에 주목하자.

# wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/keyrings/adoptium.gpg > /dev/null
3. Eclipse Adoptium DEB 저장소 설정

Eclipse Adoptium DEB 저장소 설정을 추가한다. signed-by 옵션에 Eclipse Adoptium GPG 키 경로를 지정하여, 해당 저장소가 오직 이 키만 사용하도록 강제한다.

# echo "deb [signed-by=/etc/apt/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
위 명령어로 생성된 /etc/apt/sources.list.d/adoptium.list 파일의 내용은 다음과 같다.
deb [signed-by=/etc/apt/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main
4. temurin-<version>-jdk 설치
다음은 개인적으로 사용하는 구버전 Confluence 환경에 맞춰 temurin-8-jdk 패키지를 설치하는 예시이다. 본인이 필요한 버전의 패키지를 설치하면 된다.
# apt update
# apt install temurin-8-jdk
관련 글
참고 자료