Javaの自動インストール(サイレントオプション付き)


104

私はapt-getを介してJavaをインストールしようとしています。

Javaインストーラーのこの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

どうやら、debconfのキーの値をshared/accepted-oracle-license-v1-1使用して、ユーザーが既にライセンスを受け入れているかどうかを確認します。存在する場合、スクリプトは正常に終了し、質問をせずにインストールを続行できます。ここで、debconfにOracle License 1.1にすでに同意していることを伝える必要があります。

詳細についてはマンページを参照してくださいdebconf-set-selectionsが、これは問題の例であり、他のパッケージでも同様に機能します。debconfのデータベースにあるシステムの他のキーは何ですか?インストールdebconf-utilsして実行

$ sudo debconf-get-selections

次に、自動インストールで設定する必要があるキーをさらにgrepします。これは、インストール時のデフォルト設定以外を設定する機会を提供するため、-ywith apt-getを使用するよりもはるかに柔軟です。


9
素晴らしい答え。:)
レイク

3
素晴らしい答え。シェルスクリプトでも動作します。
デレク


ライセンス受け入れコマンドのエコーに引用符は必要ありませんか?
デビッド

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

Ubuntu 14.04と14.10で@gertvdijkの回答が機能しませんでした


1
16.04で最適に動作する
ニュー

これはもう機能していません
アーメドモ

@AhmedMostafaこれを試した場所を他の人に知らせることができます。
ラーフルタクール

1
oracle-java9-installerも機能します。
コハニーロベルト

1
この作業はgoogle / cloud-sdkベースの画像に最適です

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

おかげ@Hosam -それは私が私のサイレントOracleのJavaをインストールするために必要な魔法のラインだ
Phantomwhale

ようこそ@Phantomwhale
Aly

私は間違っていますか、または答えに「/」文字がありませんか?
デビッド

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

私はそれを試しましたが、うまくいきません。
アーメドモ

Kubuntu 18.04のdocker-ce 18.05での作業を確認しました:D i386/ubuntu:18.04コンテナにインストールします。
BeepDog

2

以下のためにサイレント JavaのあなたはオープンJDKを試すことができますインストールします。

sudo apt-get install -y openjdk-7-jdk

また、これを他のopen-jdkパッケージ/拡張機能で試してみてください...

sudo apt-cache検索openjdk


このソリューションはうまくいきました。sudo apt-get install -y openjdk-7-jdk
レイク


0

これは、Debianベースのdockerイメージを正常に構築するために使用した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.