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

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

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

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

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

还有其他选择吗?

答案1

如果 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 <[email protected]>   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 许可证 1.1。

请参阅手册页以debconf-set-selections了解更多详细信息,但这是针对您的问题的示例,其他软件包的工作原理也类似。您的系统在 debconf 的数据库中还有哪些其他密钥?安装debconf-utils并执行

$ sudo debconf-get-selections

然后 grep 查找自动安装中需要设置的更多键。这比使用-ywith更灵活apt-get,因为它让您有机会在安装时设置除默认设置以外的设置。

答案2

使用以下方式静默安装 Java 6/7/8/9WebUpd8 团队的 PPA

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 上对我不起作用

答案3

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

答案4

为一个沉默的java 安装你可以尝试 open-jdk:

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

还可以尝试更多 open-jdk 包/扩展...

sudo apt-cache 搜索 openjdk

相关内容