我正在尝试通过 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 查找自动安装中需要设置的更多键。这比使用-y
with更灵活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
答案4
为一个沉默的java 安装你可以尝试 open-jdk:
sudo apt-get install -y openjdk-7-jdk
还可以尝试更多 open-jdk 包/扩展...
sudo apt-cache 搜索 openjdk