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

27

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

Eu gostaria que isso fosse respondido a partir da linha de comando para que não interrompesse a implantação automática. Alguma idéia?

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\)/ || true/g' \
    /var/lib/dpkg/info/iptables-persistent.postinst; \
sudo aptitude install iptables-persistent
    
por Brian Lyttle 31.08.2013 / 20:35

4 respostas

32

Tente usar debconf-set-selections para 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
    
por Lorin Hochstein 03.09.2013 / 14:59
0

Você perdeu -q . Experimente:

sudo DEBIAN_FRONTEND=noninteractive aptitude install -y -q iptables-persistent
    
por Germar 31.08.2013 / 21:12
0

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

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

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

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

    
por Braiam 03.09.2013 / 00:48
0

Pequena correção / ajuste para a resposta baseada em Ansible do @lorin-hochstein para não interativamente instalar o iptables-persistent no qual a tarefa requer que os sudo-privilges sejam executados com sucesso (adicionado o become: yes line): ## 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

    
por Jukka Aaltonen 14.10.2016 / 11:20