Comment puis-je empêcher apt-get / aptitude d'afficher des boîtes de dialogue lors de l'installation?

28

J'essaie de créer un Playbook Ansible pour déployer certains serveurs Ubuntu 12.04 sur Linode, mais mon problème semble être celui d'Ubuntu. Lorsque je lance différentes combinaisons d'apt-get ou d'aptitude, j'obtiens toujours la boîte de dialogue suivante à laquelle je dois répondre.

Boîte de dialogue de configuration du package

Je voudrais que cela soit répondu à partir de la ligne de commande afin qu'il n'interrompe pas le déploiement automatique. Des idées?

Mes commandes actuelles sont ci-dessous. Notez que j'essaie de définir 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
la source

Réponses:

34

Essayez d'utiliser debconf-set-selectionspour définir la valeur avant d'installer le package:

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

Ou, via 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
la source
@Braiam J'ai ajouté sudo
Lorin Hochstein
Vous pouvez également ajouter iptables-persistent iptables-persistent/autosave_v4 boolean true.
Braiam
@Braiam Ajouté v4
Lorin Hochstein
0

Tu as manqué -q. Essayer:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
la source
1
Cela n'a pas fonctionné le 12.04 :( Je dois déjà faire l'autre correction, donc je me demande si le paquet ignore simplement la variable d'environnement.
Brian Lyttle
1
J'ai testé cela dans une vm de bureau 12.04 avant de poster. Alors peut-être que c'est lié à votre serveur 12.04?
Germar
Debian affiche le même message ...
Braiam
0

Je pense que vous devriez envisager de faire une base de données debconf pour automatiser tout le processus. Ceci est un processus non intuitif et nécessite beaucoup de travail, comme le reconditionnement de vos propres fichiers deb, pour le faire fonctionner et est appelé "préconfiguration debconf" .

Il y a plusieurs exemples dans le wiki Debian sur la façon de procéder:

En fonction du temps et des circonstances, vous en choisirez un (c'est pourquoi je ne suis pas entré dans les détails). Prenez-en un qui vous semble utile et respectez-le jusqu'à la fin.

Si vous rencontrez des problèmes, posez une autre question détaillant ce que vous essayez de faire et comment vous prévoyez de le faire.

Braiam
la source
0

Correction / ajustement mineur de la réponse basée sur Ansible de @ lorin-hochstein pour installer de manière non interactive iptables-persistent dans lequel la tâche nécessite les privilèges sudo pour fonctionner correctement (a ajouté la become: yesligne): ## 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
la source
0

Si vous créez une image 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
Stéphane
la source