Wie kann ich verhindern, dass apt-get / aptitude während der Installation Dialogfelder anzeigt?

28

Ich versuche, ein Ansible Playbook zu erstellen, um einige Ubuntu 12.04-Server unter Linode bereitzustellen, aber mein Problem scheint ein Ubuntu-Problem zu sein. Wenn ich verschiedene Kombinationen von apt-get oder aptitude ausführe, wird immer der folgende Dialog angezeigt, auf den ich reagieren muss.

Paketkonfigurationsdialog

Ich möchte, dass dies über die Befehlszeile beantwortet wird, damit die automatische Bereitstellung nicht unterbrochen wird. Irgendwelche Ideen?

Meine aktuellen Befehle sind unten. Beachten Sie, dass ich versuche, DEBIAN_FRONTEND festzulegen:

#!/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
quelle

Antworten:

34

Versuchen Sie mit debconf-set-selections, den Wert festzulegen, bevor Sie das Paket installieren:

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

Oder über 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
quelle
@Braiam Ich habe sudo
Lorin Hochstein
Möglicherweise möchten Sie iptables-persistent hinzufügen iptables-persistent/autosave_v4 boolean true .
Braiam
@Braiam Hinzugefügt v4
Lorin Hochstein
0

Du hast es verpasst -q. Versuchen:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
quelle
1
Das hat am 12.04 nicht geklappt :( Ich muss bereits die andere Korrektur durchführen, also frage ich mich, ob das Paket die Umgebungsvariable einfach ignoriert.
Brian Lyttle
1
Ich habe dies vor dem Posten in einem 12.04-Desktop-VM getestet. Also liegt es vielleicht an deinem 12.04-Server?
Germar
Debian zeigt die gleiche Meldung ...
Braiam
0

Ich denke, Sie sollten darüber nachdenken, eine Debconf-Datenbank zu erstellen, um den gesamten Prozess zu automatisieren. Dies ist ein nicht intuitiver Prozess und erfordert viel Arbeit, wie das Umpacken Ihrer eigenen Deb-Dateien, um ihn zum Laufen zu bringen .

Es gibt verschiedene Beispiele im Debian-Wiki wie das geht:

Abhängig von der Zeit und den Umständen werden Sie eine auswählen (weshalb ich nicht auf Details eingegangen bin). Nehmen Sie eine, die nützlich erscheint, und bleiben Sie bis zum Ende dabei.

Wenn Sie auf Probleme stoßen, stellen Sie eine weitere Frage, die genau beschreibt, was Sie versuchen und wie Sie dies planen.

Braiam
quelle
0

Kleinere Korrekturen / Anpassungen an @ lorin-hochsteins Ansible-basierter Antwort auf die nicht interaktive Installation von iptables-persistent, bei der die Aufgabe erfordert, dass die sudo-Berechtigungen erfolgreich ausgeführt werden ( become: yesZeile hinzugefügt ): ## 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
quelle
0

Wenn Sie ein Docker-Image erstellen:

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
quelle