Come posso impedire a apt-get / aptitude di mostrare le finestre di dialogo durante l'installazione?


28

Sto cercando di creare un Ansible Playbook per distribuire alcuni server Ubuntu 12.04 su Linode, ma il mio problema sembra essere quello di Ubuntu. Quando eseguo diverse combinazioni di apt-get o aptitude, ottengo sempre la seguente finestra di dialogo a cui devo rispondere.

Finestra di dialogo di configurazione del pacchetto

Vorrei che questo ricevesse risposta dalla riga di comando in modo che non interrompesse la distribuzione automatica. Qualche idea?

I miei comandi attuali sono di seguito. Nota che sto cercando di impostare 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

Risposte:


34

Prova a usare debconf-set-selectionsper impostare il valore prima di installare il pacchetto:

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

Oppure, 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

@Braiam Ho aggiunto sudo
Lorin Hochstein il

Potresti voler aggiungere anche iptables-persistent iptables-persistent/autosave_v4 boolean true.
Braiam,

@Braiam Aggiunto v4
Lorin Hochstein,

0

Ti sei perso -q. Provare:

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

1
Questo non ha funzionato su 12.04 :( Devo già fare l'altro fixup, quindi mi chiedo se il pacchetto ignori semplicemente la variabile di ambiente.
Brian Lyttle

1
Ho provato questo in un vm desktop 12.04 prima di pubblicare. Quindi forse è correlato al tuo server 12.04?
Germar,

Debian mostra lo stesso messaggio ...
Braiam,

0

Penso che dovresti considerare di creare un database debconf per automatizzare tutto il processo. Questo è un processo non intuitivo e richiede molto lavoro, come riconfezionare i propri file deb, per farlo funzionare e si chiama "debugonf preconfigurazione" .

Ci sono molti esempi nel wiki di Debian su come farlo:

A seconda del tempo e delle circostanze, ne sceglierai uno (questo è il motivo per cui non sono entrato nei dettagli). Prendi uno che sembra utile e rimani con esso fino alla fine.

Se riscontri problemi, fai un'altra domanda in dettaglio cosa stai cercando di fare e come pensi di farlo.


0

Correzione / adattamento minore alla risposta basata su Ansible di @ lorin-hochstein per installare in modo non interattivo iptables-persistent in cui l'attività richiede che i privilegi sudo vengano eseguiti correttamente (aggiunta la become: yesriga): ## 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

Se si crea un'immagine 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.