Jak mogę zapobiec wyświetlaniu okien dialogowych apt-get / aptitude podczas instalacji?

28

Próbuję zbudować Ansible Playbook, aby wdrożyć niektóre serwery Ubuntu 12.04 na Linode, ale moim problemem wydaje się być Ubuntu. Kiedy uruchamiam różne kombinacje apt-get lub aptitude, zawsze pojawia się następujące okno dialogowe, na które muszę odpowiedzieć.

Okno konfiguracji pakietu

Chciałbym, aby została na nie udzielona odpowiedź z wiersza poleceń, aby nie zakłócało automatycznego wdrażania. Jakieś pomysły?

Moje obecne polecenia są poniżej. Pamiętaj, że próbuję ustawić 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
źródło

Odpowiedzi:

34

Spróbuj debconf-set-selectionsustawić wartość przed instalacją pakietu:

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

Lub przez 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
źródło
@Braiam Dodałem sudo
Lorin Hochstein
Możesz także dodać opcję iptables-persistent iptables-persistent/autosave_v4 boolean true.
Braiam
@Braiam Dodano v4
Lorin Hochstein
0

Przegapiłeś -q. Próbować:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
źródło
1
To nie zadziałało w dniu 12.04 :( Muszę już wykonać inne poprawki, więc zastanawiam się, czy pakiet po prostu ignoruje zmienną środowiskową.
Brian Lyttle,
1
Przetestowałem to w vm 12.04 na pulpicie przed opublikowaniem. Więc może ma to związek z twoim serwerem 12.04?
Germar
Debian pokazuje tę samą wiadomość ...
Braiam
0

Myślę, że powinieneś rozważyć zrobienie bazy danych debconf, aby zautomatyzować cały proces. Jest to nieintuicyjny proces i wymaga dużo pracy, np. Przepakowania własnych plików deb, aby działał i jest nazywany wstępnym usuwaniem debconf” .

Istnieje kilka przykładów na wiki Debiana, jak to zrobić:

W zależności od czasu i okoliczności wybierzesz jedną (dlatego nie wdałem się w szczegóły). Weź taki, który wydaje się przydatny i trzymaj się go do końca.

Jeśli napotkasz problemy, zadaj kolejne pytanie, szczegółowo opisując, co próbujesz zrobić i jak zamierzasz to zrobić.

Braiam
źródło
0

Drobne poprawki / dostosowania do odpowiedzi @ lorin-hochstein opartej na Ansible na nieinteraktywną instalację iptables-trwałą, w której zadanie wymaga pomyślnych uprawnień sudo (dodano become: yeswiersz): ## 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
źródło
0

Jeśli budujesz obraz Dockera:

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
źródło