自动安装Java(使用静默选项)

我正在尝试通过apt-get安装Java。

我找到了这个Java安装程序的PPA ,然而,当我添加存储库,更新然后发出apt-get install -y命令时,java的安装程序接管并弹出一个配置选项。

我希望能够在没有任何干预或按键盘的情况下安装它,因为我正在为我的EC2实例创建构建和部署脚本,这将自动安装所需的所有标记包。

还有其他选择吗?

如果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  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以获取您需要在自动安装中设置的更多密钥。 这比使用-yapt-get更灵活,因为它使您有机会在安装时设置默认设置以外的其他设置。

使用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上没有与我合作

支持@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 

我使用docker ubuntu16.04LTS为我validation了以下句子。

 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 

对于静默 java安装,您可以尝试open-jdk:

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

也尝试这个更多open-jdk包/扩展…

sudo apt-cache search openjdk

Oracle java不再在Ubuntu中。 http://www.omgubuntu.co.uk/2011/12/java-to-be-removed-from-ubuntu-uninstalled-from-user-machines

以下是如何安装Java JDK。 如何安装Oracle Java JDK 7?

应该有一个静音选项。

这是我用来成功构建基于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