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

kjt*_*aka 50 ubuntu automation apt

Ubuntu的Oracle Java包交互式地询问许可协议.所以每次我都要说"OK"然后"是",但我想自动化它.我这样做是:

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java7-installer 
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以在不使用期望的情况下自动化协议流程?

Max*_*xym 105

试试这个:

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 
Run Code Online (Sandbox Code Playgroud)

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


sch*_*rom 36

如果你使用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"
Run Code Online (Sandbox Code Playgroud)

注意:根据Roy Wood的评论,value参数in debconf必须设置为"true"包括引号.

  • 请注意,在debconf值上使用引号至关重要!如果在playbook中只使用"value:true",那么debconf数据库中的值将设置为"True",静默安装将失败,并显示"oracle-license-v1-1 license"无法显示的常规警告".您必须在playbook中指定"value:'true'"以确保debconf设置设置为"true",这是Oracle安装程序查找的确切字符串! (5认同)
  • 它也适用于oracle-java8-installer使用``` - name:accept oracle license debconf:name ='oracle-java8-installer'project ='shared/accepted-oracle-license-v1-1'value ='true' V型='select'``` (3认同)

el *_*00b 8

ppa:linuxuprising / java && oracle-java11-installer

对于使用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
Run Code Online (Sandbox Code Playgroud)

这是我针对基于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
Run Code Online (Sandbox Code Playgroud)

  • 我可以确认此答案也适用于Java12。请注意,许可证名称与接受的答案不同:v1-2,而不是v1-1。 (2认同)