【问题标题】:Auto yes to the License Agreement on sudo apt-get -y install oracle-java7-installer自动同意 sudo apt-get -y install oracle-java7-installer 上的许可协议
【发布时间】:2013-10-17 00:54:33
【问题描述】:

适用于 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 

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

【问题讨论】:

标签: ubuntu automation apt


【解决方案1】:

试试这个:

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 也有帮助

【讨论】:

  • @KJTanaka:不客气!请考虑接受它作为解决方案;)如果它不能解决您的整个问题,请询问更多细节。谢谢
  • 部分内容在线记录在 Ubuntu 的 add-apt-repositoryapt-getdebconf 手册中。您也可以使用命令行获取详细信息。
【解决方案2】:

如果您使用 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"

注意:debconf 中的value 参数必须设置为"true",包括引号,根据comment by Roy Wood

【讨论】:

  • 它也适用于使用- name: accept oracle license debconf: name='oracle-java8-installer' question='shared/accepted-oracle-license-v1-1' value='true' vtype='select'的oracle-java8-installer
  • 请注意,在 debconf 值上使用引号至关重要!如果您在 playbook 中仅使用“value: true”,则 debconf 数据库中的值将设置为“True”,静默安装将失败,并出现通常的警告“oracle-license-v1-1 license could not be present ”。您必须在 playbook 中指定 "value: 'true'" 以确保 debconf 设置设置为 'true',这正是 Oracle 安装程序查找的字符串!
  • 我希望能用 Ansible 语法回答更多系统配置问题:D
【解决方案3】:

ppa:linuxupprising/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

这是我为基于 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

【讨论】:

  • 我可以确认这个答案也适用于 java 12。请注意许可证名称与接受的答案不同:v1-2,而不是 v1-1。
  • 现在是'oracle-java11-installer' has no installation candidate
  • 添加 ppa linuxuprising/java 对我不起作用,我使用了这个修复:echo "deb http://ppa.launchpad.net/linuxuprising/java/ubuntu bionic main" | sudo tee /etc/apt/sources.list.d/linuxuprising-java.list && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 73C3DB2A
【解决方案4】:

对于 Java 11,你可以使用这个:

add-apt-repository ppa:linuxuprising/java
echo debconf shared/accepted-oracle-license-v1-2 select true | debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-2 seen true | debconf-set-selections
apt-get update && apt-get install -y oracle-java11-installer

这在 docker 容器中完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2016-07-28
    • 2011-09-23
    • 2018-03-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多