Ubuntu 16.04 이상에서 openjdk 7을 어떻게 설치합니까?


120

기본 시스템을 16.04로 업그레이드하고 싶지만 OpenJDK 7이 필요한 프로젝트에서 작업하고 있습니다.

분명히 사소한 것에서는 사용할 수 없습니다 apt-get install openjdk-7-jdk. 저장소에는 버전 8 및 9 만 나열됩니다.

누구든지 설치 방법에 대한 지침을 알려줄 수 있습니까?


왜 당신이 JDK 7을 원할 지 궁금해하는 사람이 있다면, neo4j 2.1.6이 Ubuntu 16.04에서 잘 작동하지 않는다고 생각하기 때문에 같은 상황에 처해 있으며 내가 알 수있는 유일한 것은 JDK입니다.
Sridhar Sarnobat

명시 적으로 시스템 JVM으로 openjdk 7이 필요합니까, 아니면 Java 7 런타임 만 필요합니까? Oracle 아카이브에서 후자를 다운로드 할 수 있습니다.
Thorbjørn Ravn Andersen

답변:


146

보안 경고

아래에 언급 된 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 (제한적)”를 추가 패키지 리포지토리로 정의하고 정보를 업데이트하며 해당 리포지토리의 종속성으로 패키지를 설치합니다.


13
실수로 openjdk-8을 먼저 설치 한 경우 (이한 것처럼)이 답변을 따른 후 sudo update-java-alternativesopenjdk-7을 기본값으로 만들 수 있습니다.
리안 샌더슨

4
참고 : 현재 16.10에서는 작동하지 않습니다
opticyclic

19
-1이 PPA가 완전히 최신 버전이 아니며 많은 중요한 보안 패치를 무시하기 때문입니다. 이 설치를 완전히 용납 할 수 없습니다, imo.
gertvdijk

3
17.04에서도 작동하지 않습니다.
콜린 해링턴

2
-1 또한 PPA가 제안한대로 제한적이며 최신 상태로 유지되지 않습니다.
구분자

65

2019 년 7 월 22 일 수정 :이 답변은 현재 작동하지 않습니다. 아래 참조 된 JDK 패키지는 Debian Experimental에서 더 이상 사용할 수 없습니다. 어쨌든 최신 보안 업데이트가 포함 된 Ubuntu Trusty 패키지보다 뒤쳐졌습니다. 이 문제가 해결 될 때까지 다른 답변을 참조하십시오 (죄송합니다, ETA 없음).


openjdk-r / ppa의 관리자가 버전 7u95-2.6.4-3 이후의 openjdk-7 패키지를 업데이트하는 것처럼 보이지 않습니다. 패키지에 대한 설명은 "데비안 GNU / 리눅스 용 1 차 아카이브에서 데비안 실험을 통해 복사 한 것"이라고 설명합니다.

옵션 1 : 수동 설치

  1. 아키텍처 용 패키지를 다운로드하십시오.
    (대부분의 사용자의 경우 64 비트 인 경우 amd64 또는 32 비트 우분투가 설치된 경우 i386을 의미합니다)

  2. 다음을 사용하여 패키지를 설치하십시오 dpkg.

    우분투 17.10 및 이전 :

    sudo dpkg -i openjdk-7-* libjpeg62-turbo* libfontconfig1* fontconfig-config*

    우분투 18.04 이상 :

    sudo dpkg -i openjdk-7-* libjpeg62-turbo*
  3. 의 출력을 확인하십시오 dpkg. 의존성 문제가 발생했을 경우 다음과 같은 내용이 표시됩니다 (아키텍처가 amd64로 대체 됨).

    처리하는 동안 오류가 발생했습니다 :
    openjdk-7-jre : amd64
    openjdk-7-jre-headless : amd64
    openjdk-7-jdk : amd64

    의존성 문제가 없다면 훌륭합니다. # 4로 넘어가십시오. 그렇지 않으면 일부 종속성 문제를 해결해야하는 경우 다음과 같이 처리됩니다.

    sudo apt install -f

    종속성을 dpkg확인한 후 다시 실행할 필요가 없습니다 apt. openjdk 패키지 설치가 자동으로 완료됩니다.

  4. Java 대안을 업데이트하십시오. 로 설치된 모든 Java 버전을 볼 수 있습니다 update-java-alternatives --list. OpenJDK Java 1.7을 활성화하려면 다음을 실행하십시오.

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    IcedTeaPlugin.so플러그인을 사용할 수 없다는 오류가 표시 될 수 있습니다. 이는 JDK를 사용하는 개발자에게는 큰 문제가 아닙니다.

  5. 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 및 그 종속 항목을 설치 및 업데이트하는 데 사용할 수 있습니다.

  1. 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
  2. 데비안 키링을 설치하십시오 :

    sudo apt install debian-archive-keyring

    참고 : 데비안 키링을 추가하는 가장 간단한 방법이지만 최신 버전이 아닐 수도 있습니다. apt update4 단계에서 실행할 때 다음과 같은 출력을 확인하십시오 .

    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 8B48AD62469255537638D0442B90D010일치해야하는 위치

  3. 필요한 저장소를 추가하십시오.

    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의 경우) 리포지토리는 종속성 버전이 더 관대합니다.

  4. apt캐시 업데이트 (데비안의 패키지 목록이 크기 때문에 시간이 오래 걸릴 것으로 예상) :

    sudo apt update
  5. openjdk-7-jdk를 설치하십시오.

    sudo apt install openjdk-7-jdk
  6. Java 대안을 업데이트하십시오. 로 설치된 모든 Java 버전을 볼 수 있습니다 update-java-alternatives --list. OpenJDK Java 1.7을 활성화하려면 다음을 실행하십시오.

    sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

    IcedTeaPlugin.so플러그인을 사용할 수 없다는 오류가 표시 될 수 있습니다. 이는 JDK를 사용하는 개발자에게는 큰 문제가 아닙니다.

  7. Java가 작동하는지 확인하십시오.

    java -version

    다음과 비슷한 것을 출력해야합니다.

    자바 버전 "1.7.0_161"
    OpenJDK 런타임 환경 (IcedTea 2.6.12) (7u161-2.6.12-1)
    OpenJDK 64 비트 서버 VM (빌드 24.161-b01, 혼합 모드)

fontconfig 노트

libfontconfig1fontconfig-config2.12에 이상이 우분투 17.10 및 이전 버전에서 업그레이드해야합니다. 데비안의 업데이트 패키지에는 Ubuntu의 사용자 정의가 포함되어 있지 않으므로 일부 응용 프로그램은 이러한 패키지가 설치된 못생긴 글꼴을 표시합니다. 예 : Charles Web Debugging Proxy. 사용하는 프로그램에 따라이 문제의 영향을 받거나받지 않을 수 있습니다.


재미있는 답변입니다.이 패키지를 자동으로 업데이트하는 방법을 찾으면 업데이트하십시오.
J.Serra

방금 우분투 16.04에 jdk 7을 설치하려고 시도했으며 이것이 작동하도록하는 유일한 방법입니다. 감사합니다!
링크

2
@ J.Serra 자동 업데이트 방법으로 수정되었습니다.
MDMower

완벽한 답변 특히 자동 방법은 높이 평가됩니다! 알아 내고 적을 시간을 내 주셔서 감사합니다!
steadfasterXX

1
자동 방법은 주로 나를 위해 일했지만 완전히 영구적 인 것은 아닙니다. libjpeg62-turbo와 함께 /etc/apt/preferences.d/debian에 패키지를 두 개 더 추가해야했습니다 : libfontconfig1 및 fontconfig-config
comodoro


0

Ubuntu 16.04, Ubuntu 17.04에 Java 7 설치

Oracle JavaOpenJDK 보다 성능이 우수하므로 Oracle Java 를 설치하는 것이 좋습니다 . 이런 이유로 대안을 게시하고 싶습니다. Oracle Java를 설치하려면 터미널에서 다음 명령을 실행하여 PPA에서 설치하십시오.

  1. 필요한 저장소를 추가하십시오.

    sudo add-apt-repository ppa:webupd8team/java
  2. apt캐시를 업데이트 하고 oracle-java7을 설치 하십시오 .

    sudo apt update
    sudo apt install java-common oracle-java7-installer

    설치 과정에서 Oracle 라이센스 계약 에 동의해야합니다 . 설치되면 JAVA_HOME 과 같은 Java 환경 변수를 설정해야합니다.

  3. 올바른 Java 환경 변수

    sudo apt install oracle-java7-set-default
    source /etc/profile
  4. 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)

3
Oracle 설치 프로그램이 더 이상 작동하지 않음 download.oracle.com에 연결 (download.oracle.com) | 184.51.150.144 | : 80 ... 연결됨. HTTP 요청을 보냈습니다. 응답을 기다리는 중 ... 404 찾을 수 없음
자율성

Oracle JDK의 경우이 회사는 JDK 7에 대한 공개 지원 을 제공하지 않습니다 (유료 지원 제공). apt-get존재하지 않는 페이지에서 설치 프로그램을 얻는 중이라고 생각합니다 . -JDK 7이 필요한 경우 아카이브 웹 사이트에서 설치 프로그램을 다운로드 할 수 있습니다. oracle.com/technetwork/java/javase/downloads/…
Jaime

0

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 월 이후에는 공개 업데이트가 제공되지 않습니다.


0

용기 사용

이것은 Ubuntu 에서 <outdated>제거 된 소프트웨어 를 실행하는 방법에 대한 보편적으로 유효한 답변입니다 <current>: containerize your application .

예를 들어 Docker 및 찾고있는 소프트웨어를 계속 사용할 수있는 이전 Ubuntu 기본 이미지를 사용하십시오.

또한 다른 방법으로 작동합니다. 현재 실행중인 안정적인 우분투에서 최신 또는 다른 Linux 배포판에서 소프트웨어를 사용해보십시오.

Ubuntu 14.04를 사용하는 Java 7의 예

  1. Docker-Docker CE 무료 버전을 설치하십시오. 예를 들어 https://docs.docker.com/install/linux/docker-ce/ubuntu/참조 하거나 docker.io최신 우분투 버전 의 패키지를 사용하십시오 .

  2. 빈 폴더에서 파일을 만듭니다 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"]

    필요한 경우 해당 명령에 더 많은 패키지를 추가하십시오.

  3. 해당 폴더에서 다음을 실행하십시오.

    docker build -t gertvdijk/java7 .
  4. 해당 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)
  5. 선택적으로 편의를 위해 랩퍼를 작성하십시오.

    • /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
  6. 다음과 같이 Java 7을 투명하게 실행하십시오.

    java7-in-docker -jar relative/path/to/some.jar

연장 유지 보수 비용을 지불하지 않으면 (2022 년까지) 14.04가 더 이상 유지 보수되지 않습니다.
Thorbjørn Ravn Andersen

-2

쉬운 방법은 다음과 같습니다.

이 행을 다음에 추가하십시오. /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패키지) 을 업데이트 할 때 패키지가 제거되지 않도록 해당 패키지를 보관해야한다는 것 입니다.

참고 :이 방법을 최후의 수단으로 사용하십시오. 문제없이 업데이트 할 수있는 다른 방법을 선호하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.