我正在尝试通过 apt-get 安装 Java。
我找到了 Java Installers 的这个PPA,但是,当我添加存储库、更新然后发出 apt-get install -y 命令时,java 安装程序接管并弹出一个配置选项。
我希望能够在没有任何干预或按下键盘的情况下安装它,因为我正在为我的 EC2 实例创建构建和部署脚本,这将自动安装它需要的所有标记包。
还有其他选择吗?
ger*_*ijk 147
如果 OpenJDK/OpenJRE 适合您,我建议您按照 @SAM 的建议使用该软件包。但是,有些软件确实需要 Oracle 的 JDK/JRE。这个答案是如何使用来自 PPA 的 Oracle 包解决许可证问题。
首先,让我们认识到所提出的问题是由开发人员创建的包的一个特性。
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
这会将 debconf 键的值设置为 true,但也将其标记为用户可见。现在这个问题不应该出现!
在包的源代码中,我在oracle-java7-installer.preinst文件中找到了它:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
然后 grep 获取您需要在自动安装中设置的更多密钥。这比使用-ywith更灵活,apt-get因为它使您有机会在安装时间设置默认设置以外的设置。
Rah*_*kur 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
Run Code Online (Sandbox Code Playgroud)
@gertvdijk 的答案在 Ubuntu 14.04 和 14.10 上对我不起作用
Hos*_*Aly 13
支持@gertvdijk答案是关于 webupd8 的 PPA的原始博客文章中的描述。
更新 2:安装程序现在要求您在安装开始前接受 Oracle 许可。这仅需要一次。如果由于某种原因需要自动安装,可以运行以下命令自动接受 Oracle 许可:
Run Code Online (Sandbox Code Playgroud)sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | \ sudo /usr/bin/debconf-set-selections
小智 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68100 次 |
| 最近记录: |