¿Cómo puedo evitar que apt-get / aptitude muestre cuadros de diálogo durante la instalación?

28

Estoy tratando de construir un Playbook Ansible para implementar algunos servidores Ubuntu 12.04 en Linode, pero mi problema parece ser uno de Ubuntu. Cuando ejecuto diferentes combinaciones de apt-get o aptitude siempre obtengo el siguiente cuadro de diálogo al que tengo que responder.

Cuadro de diálogo de configuración del paquete

Me gustaría que esto se responda desde la línea de comandos para que no interrumpa la implementación automática. ¿Algunas ideas?

Mis comandos actuales están a continuación. Tenga en cuenta que estoy tratando de configurar 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
Brian Lyttle
fuente

Respuestas:

34

Intente usar debconf-set-selectionspara establecer el valor antes de instalar el paquete:

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

O vía 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
Lorin Hochstein
fuente
@Braiam agregué sudo
Lorin Hochstein
Es posible que también desee agregar iptables-persistent iptables-persistent/autosave_v4 boolean true.
Braiam
@Braiam Añadido v4
Lorin Hochstein
0

Te perdiste -q. Tratar:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
fuente
1
Eso no funcionó en 12.04 :( Ya tengo que hacer la otra reparación, así que me pregunto si el paquete simplemente ignora la variable de entorno.
Brian Lyttle
1
Probé esto en una vm de escritorio 12.04 antes de publicar. Entonces, ¿tal vez está relacionado con su servidor 12.04?
Germar
Debian muestra el mismo mensaje ...
Braiam
0

Creo que deberías considerar hacer una base de datos debconf para automatizar todo el proceso. Este es un proceso no intuitivo y requiere mucho trabajo, como reempaquetar sus propios archivos deb, para que funcione y se llama "preselección debconf" .

Hay varios ejemplos en el wiki de Debian sobre cómo hacer esto:

Dependiendo del tiempo y las circunstancias, seleccionará uno (por eso no entre en detalles). Tome uno que parezca útil y manténgalo hasta el final.

Si tiene problemas, haga otra pregunta que detalle lo que está tratando de hacer y cómo planea hacerlo.

Braiam
fuente
0

Corrección / ajuste menor a la respuesta basada en Ansible de @ lorin-hochstein para instalar de forma no interactiva iptables-persistent en el que la tarea requiere que sudo-privilges se ejecute correctamente (se agregó la become: yeslínea): ## 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

OpenITeX
fuente
0

Si construye una imagen 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
Stephane
fuente