Como escolher uma resposta para prompt interativo durante a instalação a partir de um script de shell

Como escolher uma resposta para prompt interativo durante a instalação a partir de um script de shell

Estou escrevendo um script de shell para instalar todos os meus aplicativos necessários no meu PC Ubuntu de uma só vez (enquanto posso dar um passeio ou fazer outra coisa). Para a maioria dos aplicativos, adicionar -yao final da apt-get installinstrução funcionou bem para evitar a necessidade de qualquer envolvimento do usuário. Meu script é mais ou menos assim:

#!/bin/bash
add-apt-repository ppa:webupd8team/sublime-text-3 -y
apt-get update -y
apt-get upgrade -y
apt-get install synaptic -y
apt-get install wireshark -y

Embora eu não precise mais me preocupar com Do you want to continue? [Y/n]ou Press [ENTER] to continue or ctrl-c to cancel adding it, o problema está com wireshark, que requer uma resposta a um prompt interativo conforme mostrado abaixo:

Alerta do Wireshark

Como posso evitar esta intervenção obrigatória?

Responder1

Configurar odebconfbase de dados:

echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections

Então, instaleWireshark:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark

Você também pode querer suprimir a saída deapt-get. Nesse caso:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark > /dev/null

Responder2

O sistema apt/dpkg tem a capacidade de fornecer instalações não assistidas ou não interativas.

Isso envolve definir a DEBIAN_FRONTENDvariável noninteractivee usar -yo sinalizador. Por exemplo:

export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]

Se você receber erros, talvez seja necessário definir a qopção para convencer mais fortemente dpkgque você está de fato fazendo uma instalação não interativa: DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename].

Em alguns casos, pode ser mais fácil seguir as instruções de alguns dos pacotes que você instala posteriormente no mesmo processo de script/shell; nesse caso, você desejaria cancelar a exportação da DEBIAN_FRONTENDvariável:

unset DEBIAN_FRONTEND

Para pré-definir as opções de configuração é útil ter debconf-utilsinstalado, o que disponibilizará o comando debconf-get-selections:

sudo apt-get install debconf-utils

Recursos que você pode achar úteis

informação relacionada