Como posso impedir que o apt-get / aptitude mostre diálogos durante a instalação?

28

Estou tentando criar um Ansible Playbook para implantar alguns servidores Ubuntu 12.04 no Linode, mas meu problema parece ser o Ubuntu. Quando executo combinações diferentes de apt-get ou aptitude, sempre recebo a seguinte caixa de diálogo à qual tenho que responder.

Diálogo de configuração do pacote

Gostaria que isso fosse respondido na linha de comando para que não interrompa a implantação automática. Alguma ideia?

Meus comandos atuais estão abaixo. Observe que estou tentando definir 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
fonte

Respostas:

34

Tente usar debconf-set-selectionspara definir o valor antes de instalar o pacote:

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
fonte
@Braiam eu adicionei sudo
Lorin Hochstein
Você também pode adicionar o iptables-persistent iptables-persistent/autosave_v4 boolean true.
Braiam
@Braiam Adicionado v4
Lorin Hochstein
0

Você errou -q. Experimentar:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
Germar
fonte
1
Isso não funcionou em 12,04 :( Eu já tenho a fazer outro correção, então eu pergunto se o pacote simplesmente ignora a variável de ambiente.
Brian Lyttle
1
Eu testei isso em uma vm 12.04-desktop antes de postar. Talvez esteja relacionado ao seu servidor 12.04?
Germar 31/08
Debian mostra a mesma mensagem ...
Braiam
0

Eu acho que você deve considerar fazer um banco de dados debconf para automatizar todo o processo. Este é um processo não intuitivo e requer muito trabalho, como reembalar seus próprios arquivos deb, para fazê-lo funcionar e é chamado de "pré-configuração do debconf" .

Existem vários exemplos no wiki do Debian sobre como fazer isso:

Dependendo do tempo e das circunstâncias, você selecionará um (é por isso que não entrei em detalhes). Pegue uma que pareça útil e fique com ela até o fim.

Se você tiver problemas, faça outra pergunta detalhando o que você está tentando fazer e como planeja fazê-lo.

Braiam
fonte
0

Correção / ajuste menor na resposta baseada em Ansible do @ lorin-hochstein para instalar de forma não interativa o iptables-persistent, no qual a tarefa exige que os privilégios sudo sejam executados com êxito (adicionado o become: yes linha): ## 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
fonte
0

Se estiver criando uma imagem do 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
fonte