Java 자동 설치 (자동 옵션 사용)


104

apt-get을 통해 Java를 설치하려고합니다.

Java Installers 의이 PPA를 찾았 지만 저장소를 추가하고 업데이트 한 다음 apt-get install -y 명령을 실행하면 java의 설치 프로그램이 대신하고 구성 옵션이 나타납니다.

EC2 인스턴스 용 빌드 및 배포 스크립트를 생성하여 필요한 모든 태그가 지정된 패키지를 자동으로 설치하기 때문에 키보드를 누르거나 조작하지 않고도 설치할 수 있기를 바랍니다.

다른 옵션이 있습니까?

답변:


147

OpenJDK / OpenJRE가 제대로 작동하면 @SAM에서 제안한대로 해당 패키지를 사용하는 것이 좋습니다. 그러나 일부 소프트웨어에는 실제로 Oracle의 JDK / JRE가 필요합니다. 이 답변은 PPA의 Oracle 패키지를 사용하여 라이센스 문제를 해결하는 방법입니다.

먼저, 개발자가 만든 패키지 의 기능 이 묻는 질문에 대해 알아 보겠습니다 .

oracle-java7-installer (7u7-0~webupd8~4) maverick; urgency=medium

  * removed cookie file use or else the PPA stays disabled
  * request the user to accept the Oracle license before installation
 -- Alin Andrei <webupd8@gmail.com>   Tue, 04 Sep 2012 14:18:29 +0200

@Nate가 그의 답변에 표시된 것처럼 자동 옵션이 ​​있어야합니다. 그리고 있습니다. 설치하기 전에이 작업을 수행하십시오.

$ echo debconf shared/accepted-oracle-license-v1-1 select true | \
  sudo debconf-set-selections
$ echo debconf shared/accepted-oracle-license-v1-1 seen true | \
  sudo debconf-set-selections

이것은 debconf 키의 값을 true로 설정하지만 사용자가 볼 수있는 것으로 표시합니다. 이제이 질문이 나타나지 않아야합니다!

이것을 어떻게 찾았습니까?

패키지 소스에서 oracle-java7-installer.preinst파일 에서 이것을 추적했습니다 .

license=oracle-license-v1-1

# snip

db_get shared/accepted-$license
if [ "$RET" = "true" ]; then
    echo "$license license has already been accepted" >&2
    exit 0
fi

또한이 키 shared/accepted-oracle-license-v1-1에 대해 debconf의 값을 사용 하여 사용자가 이미 라이센스를 수락했는지 확인합니다. 이 경우 스크립트가 정상적으로 종료되고 질문없이 설치를 계속할 수 있습니다. 이제 debconf에 Oracle License 1.1을 이미 수락했음을 알려 주면됩니다.

자세한 내용은 맨 페이지를 참조하십시오. debconf-set-selections이것은 문제의 예이며 다른 패키지와 유사하게 작동합니다. debconf 데이터베이스의 시스템에 다른 키가 있습니까? 설치 debconf-utils및 수행

$ sudo debconf-get-selections

그런 다음 자동 설치에서 더 많은 키를 설정해야합니다. 설치 시간에 기본 설정 이외의 설정을 할 수있는 기회를 제공 하므로 사용 -y하는 것보다 훨씬 유연 apt-get합니다.


9
환상적인 답변. :)
Layke

3
멋진 답변입니다. 쉘 스크립트에서도 작동합니다.
Derek


라이센스 승인 명령의 에코에 따옴표가 필요하지 않습니까?
David

1
@David이 경우에는 해당되지 않습니다. 그것들을 추가하면 출력은 echo정확히 동일합니다.
gertvdijk

55

WebUpd8 팀의 PPA를 사용하여 Java 6/7/8/9 자동 설치

sudo apt-get install -y python-software-properties debconf-utils
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer

@gertvdijk 답변이 Ubuntu 14.04 & 14.10에서 나와 함께 작동하지 않았습니다.


1
16.04에서 훌륭하게 작동
공압

이것은 더 이상 작동하지 않습니다
Ahmed Mostafa

@AhmedMostafa 당신이 이것을 시도한 곳을 다른 사람들에게 알려줄 수 있습니까?
Rahul Thakur

1
작동합니다 oracle-java9-installer.
Kohányi Róbert

1
이 작업은 Google / cloud-sdk 기반 이미지로 완벽하게 작동
Xin Meng

13

@gertvdijk 답변 지원 은 webupd8의 PPA에 대한 원본 블로그 게시물 의 설명입니다 .

업데이트 2 : 이제 설치를 시작하기 전에 설치 프로그램에서 Oracle 라이센스에 동의해야합니다. 한 번만 필요합니다. 어떤 이유로 설치를 자동화해야하는 경우 다음 명령을 실행하여 Oracle 라이센스를 자동으로 승인 할 수 있습니다.

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \
sudo /usr/bin/debconf-set-selections

이것이 바로 Oracle Java 자동 설치에 필요한 마법입니다. @Hosam
Phantomwhale

귀하는 환영합니다 @Phantomwhale
Hosam Aly

내가 잘못했거나 대답에 누락 된 / 추가 "" "문자가 있습니까?
David

11

docker ubuntu16.04LTS를 사용하여 다음 문장이 작동하는지 확인했습니다.

RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:webupd8team/java && apt-get update

RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections

RUN apt-get install -y oracle-java8-installer

시도했지만 작동하지 않습니다.
Ahmed Mostafa

i386/ubuntu:18.04컨테이너에 설치하는 Kubuntu 18.04 : D의 docker-ce 18.05에서 나를 위해 일하는 것을 확인했습니다 .
BeepDog

2

A의 침묵 자바는 오픈 JDK를 시도 할 수 있습니다 설치 :

sudo apt-get 설치 -y openjdk-7-jdk

더 많은 오픈 JDBC 패키지 / 확장을 위해 이것을 시도하십시오 ...

sudo apt-cache 검색 openjdk


이 솔루션은 훌륭하게 작동했습니다. sudo apt-get install -y openjdk-7-jdk
Layke


0

이것은 데비안 기반 도커 이미지를 성공적으로 빌드하는 데 사용한 Dockerfile에서 발췌 한 것입니다.

( 참조 )

RUN apt-get update \
    && apt-get upgrade \
    && apt-get install -y gnupg

RUN echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
RUN echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
RUN apt-get update
RUN echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
RUN apt-get install -y oracle-java8-installer \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && R CMD javareconf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.