当前位置: 首页>>技术教程>>正文


ubuntu – 对sudo apt-get上的许可协议自动是-y install oracle-java7-installer

, ,

问题描述

用于Ubuntu的Oracle Java软件包以交互方式询问许可协议。所以我不得不每次都说’OK’,然后说’yes’,但我想使其自动化。我的工作是这样的:

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java7-installer 

是否有一种简单的方法可以在不使用Expect的情况下自动完成协议流程?

最佳方案

试试看:

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
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
sudo apt-get -y install oracle-java7-installer 

在我的debian 7.1上运行第3和第4个命令会有所帮助,所以我认为在ubuntu上也可以这样做

次佳方案

如果您将Ansible用于自动化,则可能需要将其放入您的剧本中:

tasks:

  - name: add java PPA
    apt_repository:
      repo: "ppa:webupd8team/java"

  - name: accept oracle license
    debconf:
      name: "oracle-java7-installer"
      question: "shared/accepted-oracle-license-v1-1"
      value: "true"
      vtype: "select"

  - name: install jdk
    apt:
      name: "oracle-java7-installer"

注意:根据Roy Wood的评论,必须将debconf中的value参数设置为"true"(包括引号)。

第三种方案

ppa:linuxuprising /java&& oracle-java11-安装程序

对于使用Linux Uprising Java 11安装程序遇到此问题的任何人,请参阅以下内容:

  1. https://launchpad.net/~linuxuprising/+archive/ubuntu/java

  2. https://www.linuxuprising.com/2018/10/how-to-install-oracle-java-11-in-ubuntu.html

而不是答案中的命令(在其站点上列出),您需要这样做:

echo oracle-java11-installer shared/accepted-oracle-license-v1-2 select true | \
sudo /usr/bin/debconf-set-selections

这是我针对基于Ubuntu 18.04的容器的Docker设置:

RUN apt-get update && apt-install -y software-properties-common && \
    add-apt-repository -y ppa:linuxuprising/java && \
    apt-get update && \
    echo oracle-java11-installer shared/accepted-oracle-license-v1-2 select true | sudo /usr/bin/debconf-set-selections && \
    apt-get install -y oracle-java11-installer && \
    apt install oracle-java11-set-default

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8857.html,未经允许,请勿转载。