如何防止apt-get / aptitude在安装过程中显示对话框?


28

我正在尝试构建Ansible Playbook,以在Linode上部署一些Ubuntu 12.04服务器,但是我的问题似乎是Ubuntu。当我运行apt-get或aptitude的不同组合时,总是得到以下我必须响应的对话框。

软件包配置对话框

我希望在命令行中回答此问题,以便它不会中断自动部署。有任何想法吗?

我当前的命令如下。请注意,我正在尝试设置DEBIAN_FRONTEND:

#!/bin/bash

echo 'DEBIAN_FRONTEND="noninteractive"' >> /etc/profile
echo 'DEBIAN_FRONTEND="noninteractive"' >> ~/.profile

source /etc/profile
source ~/.profile

# This next line is the one that pops up the dialog
sudo aptitude -y install iptables-persistent

# Need this to fix an issue with the package post-install (this works fine.)
sudo sed \
    -i 's/\(modprobe -q ip6\?table_filter\)/\1 || true/g' \
    /var/lib/dpkg/info/iptables-persistent.postinst; \
sudo aptitude install iptables-persistent

Answers:


34

debconf-set-selections在安装软件包之前,尝试使用来设置值:

echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections

或者,通过ansible

- name: prevent the iptables-peristent install dialog
  debconf: name=iptables-persistent question={{ item }} vtype=boolean value=true
  with_items:
  - iptables-persistent/autosave_v4
  - iptables-persistent/autosave_v6
- name: install iptables-persistent
  apt: name=iptables-persistent

@Braiam我添加了sudo
Lorin Hochstein

您可能也想添加iptables-persistent iptables-persistent/autosave_v4 boolean true
Braiam 2013年

@Braiam添加了v4
Lorin Hochstein

0

你错过了-q。尝试:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent

1
没有工作在12.04 :(我已经做其他的修正,所以我不知道如果包会忽略环境变量。
布莱恩Lyttle

1
发布之前,我在12.04-desktop vm中对此进行了测试。因此,也许与您的12.04服务器有关?
2013年

Debian显示了同样的信息……
Braiam

0

我认为您应该考虑做一个debconf数据库来自动化所有过程。这是一个不直观的过程,需要大量工作,例如重新打包自己的deb文件,才能使其正常工作,这称为“ debconf preseeding”

Debian Wiki中有一些有关如何执行此操作的示例:

根据时间和情况,您将选择一个(这就是为什么我没有详细介绍)。拿一个看似有用的东西,坚持到底。

如果遇到问题,请提出另一个问题,详细说明您要尝试做什么以及如何计划。


0

对@ lorin-hochstein基于Ansible的非交互式安装iptables-persistent的答案的较小修复/调整,其中该任务要求sudo特权才能成功运行(添加了become: yes一行): ## Prevent iptables-persistent pckgs install dialog (debconf-set-selections) - name: prevent the iptables-peristent install dialog become: yes debconf: name=iptables-persistent question={{ item }} vtype=boolean value=true with_items: - iptables-persistent/autosave_v4 - iptables-persistent/autosave_v6 - name: install iptables-persistent apt: name=iptables-persistent


0

如果构建Docker映像:

RUN echo iptables-persistent iptables-persistent/autosave_v4 boolean true | debconf-set-selections \
  && echo iptables-persistent iptables-persistent/autosave_v6 boolean true | debconf-set-selections
RUN apt-get install -y iptables-persistent
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.