기본 시스템을 16.04로 업그레이드하고 싶지만 OpenJDK 7이 필요한 프로젝트에서 작업하고 있습니다.
분명히 사소한 것에서는 사용할 수 없습니다 apt-get install openjdk-7-jdk
. 저장소에는 버전 8 및 9 만 나열됩니다.
누구든지 설치 방법에 대한 지침을 알려줄 수 있습니까?
기본 시스템을 16.04로 업그레이드하고 싶지만 OpenJDK 7이 필요한 프로젝트에서 작업하고 있습니다.
분명히 사소한 것에서는 사용할 수 없습니다 apt-get install openjdk-7-jdk
. 저장소에는 버전 8 및 9 만 나열됩니다.
누구든지 설치 방법에 대한 지침을 알려줄 수 있습니까?
답변:
보안 경고
아래에 언급 된 PPA의 패키지는 Java에 대한 보안 패치로 업데이트되지 않습니다. 생산에는 사용하지 마십시오. 대체 답변을 참조하십시오.
글을 쓰는 시점에서 OpenJDK 7의 마지막 업로드는 버전 7u95로 '2016-04-22'로 완료되었으며 여전히 '최신'으로 제공되며 Ubuntu 14.04가 7u181 로 업데이트 되었습니다 .
업데이트 :이 PPA의 보안 업데이트가 없기 때문에 2018 년에 사용하려는 것이 아닌 가장 많이 투표 된 답변입니다.
나는 다음과 같은 지침을 찾았습니다.
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
“OpenJDK 업로드 용 PPA (제한적)”를 추가 패키지 리포지토리로 정의하고 정보를 업데이트하며 해당 리포지토리의 종속성으로 패키지를 설치합니다.
sudo update-java-alternatives
openjdk-7을 기본값으로 만들 수 있습니다.
2019 년 7 월 22 일 수정 :이 답변은 현재 작동하지 않습니다. 아래 참조 된 JDK 패키지는 Debian Experimental에서 더 이상 사용할 수 없습니다. 어쨌든 최신 보안 업데이트가 포함 된 Ubuntu Trusty 패키지보다 뒤쳐졌습니다. 이 문제가 해결 될 때까지 다른 답변을 참조하십시오 (죄송합니다, ETA 없음).
openjdk-r / ppa의 관리자가 버전 7u95-2.6.4-3 이후의 openjdk-7 패키지를 업데이트하는 것처럼 보이지 않습니다. 패키지에 대한 설명은 "데비안 GNU / 리눅스 용 1 차 아카이브에서 데비안 실험을 통해 복사 한 것"이라고 설명합니다.
옵션 1 : 수동 설치
아키텍처 용 패키지를 다운로드하십시오.
(대부분의 사용자의 경우 64 비트 인 경우 amd64 또는 32 비트 우분투가 설치된 경우 i386을 의미합니다)
다음을 사용하여 패키지를 설치하십시오 dpkg
.
우분투 17.10 및 이전 :
sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*
우분투 18.04 이상 :
sudo dpkg -i openjdk-7-* libjpeg62-turbo*
의 출력을 확인하십시오 dpkg
. 의존성 문제가 발생했을 경우 다음과 같은 내용이 표시됩니다 (아키텍처가 amd64로 대체 됨).
처리하는 동안 오류가 발생했습니다 : openjdk-7-jre : amd64 openjdk-7-jre-headless : amd64 openjdk-7-jdk : amd64
의존성 문제가 없다면 훌륭합니다. # 4로 넘어가십시오. 그렇지 않으면 일부 종속성 문제를 해결해야하는 경우 다음과 같이 처리됩니다.
sudo apt install -f
종속성을 dpkg
확인한 후 다시 실행할 필요가 없습니다 apt
. openjdk 패키지 설치가 자동으로 완료됩니다.
Java 대안을 업데이트하십시오. 로 설치된 모든 Java 버전을 볼 수 있습니다 update-java-alternatives --list
. OpenJDK Java 1.7을 활성화하려면 다음을 실행하십시오.
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
IcedTeaPlugin.so
플러그인을 사용할 수 없다는 오류가 표시 될 수 있습니다. 이는 JDK를 사용하는 개발자에게는 큰 문제가 아닙니다.
Java가 작동하는지 확인하십시오.
java -version
다음과 비슷한 것을 출력해야합니다.
자바 버전 "1.7.0_161" OpenJDK 런타임 환경 (IcedTea 2.6.12) (7u161-2.6.12-1) OpenJDK 64 비트 서버 VM (빌드 24.161-b01, 혼합 모드)
옵션 2 : 자동 설치 (로 업데이트 포함 apt
)
Pinning 은 데비안 리포지토리에서 openjdk-7-jdk 및 그 종속 항목을 설치 및 업데이트하는 데 사용할 수 있습니다.
apt
우리가 관심이있는 패키지 만 고려하도록 고정 파일을 작성 하십시오 (데비안 실험 패키지로 전체 Ubuntu 배포판을 "업그레이드"하고 싶지는 않습니다).
/etc/apt/preferences.d/debian
아래 내용으로 파일 을 작성하십시오 . 수퍼 유저 권한이 필요하므로 중 하나를 사용하는 것 sudo vim
, sudo nano
, gksudo gedit
, 등
Package: *
Pin: release o=Debian,n=experimental
Pin-Priority: -1
Package: *
Pin: release o=Debian,n=sid
Pin-Priority: -1
Package: openjdk-7-jdk
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: openjdk-7-jre
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: openjdk-7-jre-headless
Pin: release o=Debian,n=experimental
Pin-Priority: 500
Package: libjpeg62-turbo
Pin: release o=Debian,n=sid
Pin-Priority: 500
우분투 17.10 및 이전 버전의 경우 다음도 추가하십시오 (아래 참고 참조).
Package: libfontconfig1
Pin: release o=Debian,n=sid
Pin-Priority: 500
Package: fontconfig-config
Pin: release o=Debian,n=sid
Pin-Priority: 500
데비안 키링을 설치하십시오 :
sudo apt install debian-archive-keyring
참고 : 데비안 키링을 추가하는 가장 간단한 방법이지만 최신 버전이 아닐 수도 있습니다. apt update
4 단계에서 실행할 때 다음과 같은 출력을 확인하십시오 .
W : GPG 오류 : http://cdn-fastly.deb.debian.org/debian Experiment InRelease : 공개 키를 사용할 수 없어서 다음 서명을 확인할 수 없습니다. NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010 E : 'http://httpredir.debian.org/debian Experimental InRelease'저장소에 서명하지 않았습니다.
이 오류가 표시되면 다음을 사용하여 필요한 키를 수동으로 추가하십시오.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7638D0442B90D010
경고 메시지에 표시되는 pubkey 8B48AD6246925553
와 7638D0442B90D010
일치해야하는 위치
필요한 저장소를 추가하십시오.
sudo add-apt-repository 'deb http://httpredir.debian.org/debian experimental main'
sudo add-apt-repository 'deb http://httpredir.debian.org/debian sid main'
왜 안정적인 데비안 저장소를 사용하지 않습니까? 데비안 안정적으로 만족할 수없는 의존성을 경험하게 될 것입니다. 실험 (openjdk-7의 경우) 및 sid (libjpeg62-turbo, libfontconfig1 및 fontconfig-config의 경우) 리포지토리는 종속성 버전이 더 관대합니다.
apt
캐시 업데이트 (데비안의 패키지 목록이 크기 때문에 시간이 오래 걸릴 것으로 예상) :
sudo apt update
openjdk-7-jdk를 설치하십시오.
sudo apt install openjdk-7-jdk
Java 대안을 업데이트하십시오. 로 설치된 모든 Java 버전을 볼 수 있습니다 update-java-alternatives --list
. OpenJDK Java 1.7을 활성화하려면 다음을 실행하십시오.
sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
IcedTeaPlugin.so
플러그인을 사용할 수 없다는 오류가 표시 될 수 있습니다. 이는 JDK를 사용하는 개발자에게는 큰 문제가 아닙니다.
Java가 작동하는지 확인하십시오.
java -version
다음과 비슷한 것을 출력해야합니다.
자바 버전 "1.7.0_161" OpenJDK 런타임 환경 (IcedTea 2.6.12) (7u161-2.6.12-1) OpenJDK 64 비트 서버 VM (빌드 24.161-b01, 혼합 모드)
fontconfig 노트
libfontconfig1
및 fontconfig-config
2.12에 이상이 우분투 17.10 및 이전 버전에서 업그레이드해야합니다. 데비안의 업데이트 패키지에는 Ubuntu의 사용자 정의가 포함되어 있지 않으므로 일부 응용 프로그램은 이러한 패키지가 설치된 못생긴 글꼴을 표시합니다. 예 : Charles Web Debugging Proxy. 사용하는 프로그램에 따라이 문제의 영향을 받거나받지 않을 수 있습니다.
필요에 따라 Azul에서 OpenJDK 7을 다운로드 할 수 있습니다. 둘 다 DEB (패키지 시스템 용)와 ZIP 배포본을 가지고 있습니다. ZIP 배포판 만 사용했습니다.
Ubuntu 16.04, Ubuntu 17.04에 Java 7 설치
Oracle Java 는 OpenJDK 보다 성능이 우수하므로 Oracle Java 를 설치하는 것이 좋습니다 . 이런 이유로 대안을 게시하고 싶습니다. Oracle Java를 설치하려면 터미널에서 다음 명령을 실행하여 PPA에서 설치하십시오.
필요한 저장소를 추가하십시오.
sudo add-apt-repository ppa:webupd8team/java
apt
캐시를 업데이트 하고 oracle-java7을 설치 하십시오 .
sudo apt update
sudo apt install java-common oracle-java7-installer
설치 과정에서 Oracle 라이센스 계약 에 동의해야합니다 . 설치되면 JAVA_HOME 과 같은 Java 환경 변수를 설정해야합니다.
올바른 Java 환경 변수
sudo apt install oracle-java7-set-default
source /etc/profile
Java가 작동하는지 확인하십시오.
java -version
다음과 비슷한 것을 출력해야합니다.
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-u80)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-u80, mixed mode)
apt-get
존재하지 않는 페이지에서 설치 프로그램을 얻는 중이라고 생각합니다 . -JDK 7이 필요한 경우 아카이브 웹 사이트에서 설치 프로그램을 다운로드 할 수 있습니다. oracle.com/technetwork/java/javase/downloads/…
Oracle JDK 대안 :
7, 8과 9 사이를 전환하기 때문에 리포지토리로의 노력을 피하고 싶었으므로 OpenJDK가 아닌 Oracle JDK로 끝났습니다. 공식 사이트 에서 다운로드했습니다 . 최신 빌드 80에 OpenJDK의 빌드 161과 동일한 수정 사항이 포함되어 있는지 확실하지 않습니다. 그러나 개발 용 버전이 있으므로 아무 의미가 없습니다.
그런 다음 $JAVA_HOME
다양한 스크립트가 올바른 JDK (예 : Maven, JBoss 등)를 선택하도록 환경에서 설정해야합니다 .
완벽을 기하기 위해 JDK 버전 7은 EOL 방식이며, JDK 8 공개 지원도 2017 년 9 월 이후 종료되며 2018 년 9 월 이후에는 공개 업데이트가 제공되지 않습니다.
이것은 Ubuntu 에서 <outdated>
제거 된 소프트웨어 를 실행하는 방법에 대한 보편적으로 유효한 답변입니다 <current>
: containerize your application .
예를 들어 Docker 및 찾고있는 소프트웨어를 계속 사용할 수있는 이전 Ubuntu 기본 이미지를 사용하십시오.
또한 다른 방법으로 작동합니다. 현재 실행중인 안정적인 우분투에서 최신 또는 다른 Linux 배포판에서 소프트웨어를 사용해보십시오.
Docker-Docker CE 무료 버전을 설치하십시오. 예를 들어 https://docs.docker.com/install/linux/docker-ce/ubuntu/ 를 참조 하거나 docker.io
최신 우분투 버전 의 패키지를 사용하십시오 .
빈 폴더에서 파일을 만듭니다 Dockerfile
.
FROM ubuntu:trusty
RUN apt-get update \
&& apt-get install -y \
openjdk-7-jdk \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/usr/bin/java"]
필요한 경우 해당 명령에 더 많은 패키지를 추가하십시오.
해당 폴더에서 다음을 실행하십시오.
docker build -t gertvdijk/java7 .
해당 Java 7 이미지를 사용하여 단일 컨테이너 내에서 명령을 실행하십시오.
예 java -version
:
docker run --rm -it gertvdijk/java7 -version
산출:
java version "1.7.0_181"
OpenJDK Runtime Environment (IcedTea 2.6.14) (7u181-2.6.14-0ubuntu0.1)
OpenJDK 64-Bit Server VM (build 24.181-b01, mixed mode)
선택적으로 편의를 위해 랩퍼를 작성하십시오.
/usr/local/bin/java7-in-docker
내용 으로 파일 을 작성하십시오 .
#!/usr/bin/env sh -e
DOCKER_IMAGE=gertvdijk/java7
PWD="$(pwd)"
exec docker run \
--rm -it \
-v ${PWD}:${PWD} \
-v "/etc/passwd:/etc/passwd:ro" \
-v "/etc/group:/etc/group:ro" \
--user "$(id -u):$(id -g)" \
--workdir "${PWD}" \
"${DOCKER_IMAGE}" \
$@
이렇게하면 현재 작업 디렉토리를 전체 파일 시스템이 아닌 컨테이너 내부에서 사용할 수있게되고 컨테이너 네임 스페이스에서 로컬 사용자 계정을 가장합니다.
실행 파일로 표시하십시오.
sudo chmod +x /usr/local/bin/java7-in-docker
다음과 같이 Java 7을 투명하게 실행하십시오.
java7-in-docker -jar relative/path/to/some.jar
쉬운 방법은 다음과 같습니다.
이 행을 다음에 추가하십시오. /etc/apt/sources.list
:
deb http://security.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
그런 다음 apt를 업데이트하고 설치하십시오. tzdata
패키지 를 다운 그레이드해야 할 수도 있습니다 .
그런 다음 해당 리포지토리에서 패키지를 설치하거나 업데이트하지 못하게하려면 해당 줄 을 주석 처리하고 업데이트를 다시 수행 하는 것이 좋습니다 (예기치 않은 동작이 발생할 수 있음).
한 가지 문제는 시스템 (특히 tzdata
패키지) 을 업데이트 할 때 패키지가 제거되지 않도록 해당 패키지를 보관해야한다는 것 입니다.
참고 :이 방법을 최후의 수단으로 사용하십시오. 문제없이 업데이트 할 수있는 다른 방법을 선호하십시오.