Ubuntu : OpenJDK 8-패키지를 찾을 수 없음


103

그래서 방금 Ubuntu를 설치했고 Linux 환경에서 작업하는 것은 이번이 처음이므로 여기에서 멍청함을 참으십시오.

어쨌든 Oracle에서 직접 Java 8 JDK를 다운로드했지만 Java 8 용 OpenJDK도 있다는 것을 알고 있습니다. 두 가지 질문이 있습니다.

  1. Oracle 버전과 OpenJDK의 차이점은 무엇입니까? 장단점?

  2. OpenJDK 8을 얻으려고 할 때 할 수 없습니다. 조언을 구하면서 터미널 명령과 여기에 표시되는 오류 메시지를 붙여넣고 있습니다. 다시 말하지만, Linux를 처음 접한 사람은이 시점에서 내 첫 번째 Linux 배포판에 한 시간도 채 안 남았습니다.

    user@computer:~/Java$ sudo apt-get install openjdk-8-jdk
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package openjdk-8-jdk
    

어떤 도움을 주시면 감사하겠습니다. 그동안 저는 Oracle 패키지를 사용하겠습니다. 감사.

편집하다:

그래서 이제 새로운 문제가 생겼습니다. 나는 OpenJDK 7을 설치했고 Maven과 함께 제공되었고 내가 2 대 1 거래를한다는 것을 깨닫기 전에 방금 설치했습니다. 이제 JDK 7과 Eclipse, Maven이 있으며 모두 작동하지만 8이 아닌 JDK 7에 갇혀 있습니다.

아래 링크가있는 것을 보았습니다. 아침에 확인하려고합니다. 오전 2시이고 지금은 피곤합니다. 이 새로운 문제에 대한 다른 조언을 주시면 감사하겠습니다. 그렇지 않으면 아침에 해당 링크를 먼저 확인하겠습니다.



어떤 버전의 Ubuntu를 실행하고 있습니까? 최신 버전은 설치 옵션으로 사용할 수 있습니다.
마코토

Stephen의 링크로 문제가 해결됩니다. :)
Juned

감사. 새벽 2 시라 서 잠자리에 들지만 아침에 링크를 확인하겠습니다. 나는 당신이 그것을 살펴볼 수 있다면 좋을 것입니다. 기존 링크 / 답변이 도움이된다면 지금 당장보기에는 너무 피곤해서 죄송합니다. 아침에 확인하겠습니다.
user2223059

나는 우분투 14.10에 있다고 믿는다. 가장 최근의 장기 릴리스가 무엇이든간에.
user2223059

답변:


126

업데이트 : 아래의 루트 권한없이 설치


문제를 해결할 수있는 (반 공식) 저장소가 이미있는 경우 우분투 시스템에 수동으로 패키지를 설치하지 않는 것이 좋습니다. 또한 (매우 산발적 인) 호환성 문제를 피하기 위해 Oracle JDK를 개발에 사용하십시오 (수년 전에 시도해 보았지만 지금은 확실히 더 낫습니다).

시스템에 webupd8 저장소를 추가하십시오 .

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update

선호하는 jdk 버전을 설치합니다 (java-6에서 java-9 버전 사용 가능) :

sudo apt-get install oracle-java8-installer

openjdk 및 oracle 버전을 혼합하여 여러 버전의 jdk를 설치할 수도 있습니다. 그런 다음 update-java-alternatives 명령을 사용하여 설치된 버전간에 전환 할 수 있습니다 .

# list available jdk
update-java-alternatives --list

# use jdk7
sudo update-java-alternatives --set java-7-oracle

# use jdk8
sudo update-java-alternatives --set java-8-oracle

요구 사항

당신이 얻을 경우 add-apt-repository: command not found반드시 가지고 software-properties-common설치 :

sudo apt-get install software-properties-common

이전 버전의 Ubuntu를 사용하는 경우 :

sudo apt-get install python-software-properties

루트 권한없이 JDK 설치

대상 컴퓨터에 대한 관리자 권한이없는 경우 가장 간단한 방법은 sdkmanzulu 인증 openjdk를 설치하는 데 사용 하는 것입니다.

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java

참고 : sdkman은 기본 옵션은 아니지만 공식 Oracle JDK도 설치할 수 있습니다. 사용 가능한 버전보기 :

sdk ls java

다음을 사용하여 선택한 버전을 설치하십시오.

sdk install java <version>

예를 들면 :

sdk install java 9.0.1-oracle

명령 용어

  • sudo <command> [command_arguments] : 수퍼 유저 권한으로 명령을 실행합니다.

  • add-apt-repository <PPA_id> : Ubuntu (모든 Debian 파생 제품 및 일반적으로 모든 Linux 배포판과 마찬가지로)에는 패키지 종속성 및 업데이트와 같은 작업을 처리하는 패키지의 기본 저장소가 있습니다. Ubuntu에서는 일반적으로 시스템에서 사용할 수없는 패키지 (oracle jdk와 마찬가지로) 또는 사용 가능한 버전의 업데이트 된 버전 (예 : LTS의 LibreOffice 5는 이것을 통해서만 사용할 수 있음)을 포함하는 PPA (개인 패키지 아카이브)를 사용하여 주 저장소를 확장 할 수 있습니다. PPA ).

  • apt-get [install|update|upgrade|purge|...] : 시스템의 모든 저장소 상태 를 조작하는 데 사용되는 ""명령 줄 패키지 처리기입니다 (설치 / 업데이트 / 업그레이드는 저장소 현재 상태의 변경으로 볼 수 있음).

우리의 경우 : 명령 sudo add-apt-repository ppa:webupd8team/java을 사용하여 다음 저장소 업데이트가 webupd8 저장소에서도 패키지 정보를 검색해야 함을 시스템에 알립니다.

으로 sudo apt-get update우리가 실제로 시스템 저장소 업데이트 (이 운영하는 수퍼 유저 권한이 필요합니다 우리 앞에 추가 그래서 sudo는 명령으로).

sudo apt-get install oracle-java8-installer

  • update-java-alternatives ( update-alternatives 의 특정 자바 버전 ) : Ubuntu에서 여러 패키지가 동일한 기능을 제공합니다 (인터넷 검색, 메일 컴파일, 텍스트 파일 편집 또는 java / javac 실행 파일 제공 ...). 시스템이 특정 작업에 대해 사용자 즐겨 찾기 도구를 선택할 수 있도록하기 위해 아래의 심볼릭 링크 를 사용하는 메커니즘 /etc/alternatives/이 사용됩니다. 위에 표시된대로 jdk를 업데이트하고 (Java 7과 Java 8간에 전환)이 명령의 출력이 어떻게 변경되는지 확인합니다.

    ls -l /etc/alternatives/java*

우리의 경우 : sudo update-java-alternatives --set java-8-oraclejava-8-oracle 실행 파일을 가리 키도록 / etc / alternatives 아래의 심볼릭 링크를 업데이트합니다.

추가 사항 :

  • man <command> : man을 사용하여 (거의) 모든 쉘 명령과 옵션에 대해 잘 작성되고 자세한 도움말을 읽으십시오 (이 작은 답변에서 언급 한 모든 명령에는 man 페이지가 있습니다. try man update-java-alternatives).

  • apt-cache search <search_key> : 제공된 search_key와 관련된 패키지를 검색하기 위해 APT 캐시를 쿼리합니다 (패키지 이름 또는 패키지 설명의 일부 단어 일 수 있음).

  • apt-cache show <package> : 특정 패키지 (패키지 버전, 설치 여부, 설명)에 대한 APT 정보를 제공합니다.


1
문제는 "Unable to find package oracle-java8-installer"라는 메시지가 표시된다는 것입니다. sudo apt-get 명령을 사용하여 openjdk 8을 얻으려고 할 때도 똑같은 일이 발생합니다.
user2223059

3
특히, 이것은 오픈 커뮤니티 버전 (openjre)이 아닌 Java의 Oracle 상용 버전입니다 (적어도 레이블이 지정됨).
ThorSummoner

1
@basZero : 소프트웨어 속성을 설치해야하는 것 같습니다 : apt-get install software-properties-common. 따라서이 요구 사항을 포함하도록 게시물을 업데이트하겠습니다. 감사합니다
주세페 Ricupero

1
이 답변은 유효하지 않습니다-오라클은 Java 설치 프로그램의 직접 다운로드를 금지합니다. sudo apt-get install oracle-java8-installer 실패
Alec Istomin

2
벌써 4 시간 동안이 문제를 해결하려고 노력했습니다. 이 멋진 솔루션에 감사드립니다!
ickyrr

116

보시다시피 Java 1.7 만 설치되어 있습니다 (Ubuntu 14.04 시스템에).

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Java 8을 설치하기 위해

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

그 후, 이제 Java 7과 8이 있습니다.

update-java-alternatives -l
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

보너스 추가 (버전 간 전환 방법)

  • 터미널에서 다음 명령을 실행하십시오.

sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number:

당신은 내가 오픈 JDK 8을 실행하는거야 볼 수 있듯이 7 눌러 JDK하기 위해 전환하려면 1및 히트 Enter키를 누릅니다. 동일한 작업을 수행 javac뿐만 아니라,와 sudo update-alternatives --config javac.

버전을 확인하여 변경 사항을 확인하십시오. java -versionjavac -version.


2
OpenJDK를 설치하는 데 어떤 저장소가 필요한지 몰랐을 때 매우 유용합니다! 감사합니다.
cram2208

@ cram2208 도와 주셔서 기쁩니다. 댓글 주셔서 감사합니다.
samsamara

openjdk-r은 서버에 충분히 안전합니까?
Wang

자세한 답변에 감사드립니다.이 솔루션은 저에게 완벽하게 작동합니다.
Muddasir23

14

임의의 PPA 또는 무료가 아닌 Oracle 바이너리가 아닌 공식 데비안 리포지토리에서 OpenJDK 8을 얻고 있습니다. 내가 한 방법은 다음과 같습니다.

sudo apt-get install debian-keyring debian-archive-keyring

만들기 /etc/apt/sources.list.d/debian-jessie-backports.list:

deb http://httpredir.debian.org/debian/ jessie-backports main

만들기 /etc/apt/preferences.d/debian-jessie-backports:

Package: *
Pin: release o=Debian,a=jessie-backports
Pin-Priority: -200

그런 다음 마지막으로 설치를 수행하십시오.

sudo apt-get update
sudo apt-get -t jessie-backports install openjdk-8-jdk

1
그리고 마지막으로 update-alternatives --config java ;-)
Javali

감사합니다! 이것이 저를 위해 일한 유일한 솔루션입니다 (Deb 8)

3
sudo apt-get update
sudo apt-get  install openjdk-8-jdk

이것은 작동합니다


이것이 기존 답변에 추가되는 설명을 추가하십시오.
Gert Arnold

Windows에서 WSL2를 사용하고 있었는데 OpenJDK를 설치하기 전에 패키지를 업데이트하는 것을 잊었고 동일한 오류가 발생했습니다. @GertArnold, Zoe의 대답은 그 시나리오에서 나를 도왔습니다.
pcdro

0

나는 같은 문제가 있었고이 페이지의 모든 솔루션을 시도했지만 아무도 트릭을하지 않았습니다.

마침내 효과가 있었던 universe것은 내 repo 목록에 repo를 추가하는 것 입니다. 이를 수행하려면 다음 명령을 실행하십시오.

sudo add-apt-repository universe

위의 명령을 실행 한 후 실행할 수있었습니다.

sudo apt install openjdk-8-jre

문제없이 패키지가 설치되었습니다.

이것이 누군가를 돕기를 바랍니다.


이 답변에 대해 왜 내가 반대 투표를 받았는지 모르겠습니다. 잘못된 것이 있거나 잠재적 인 문제가있는 경우 다른 사람과 본인이 더 잘 이해할 수 있도록 의견을 남겨주세요.
Daniel Black

0

JDK저장소를 추가 한 후 설치하기 전에 먼저 업데이트를 실행하여 저장소를 추가 할 수 있습니다. apt update

그런 다음 설치를 계속하십시오. sudo apt install adoptopenjdk-8-hotspot

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