Cómo elegir una respuesta para un mensaje interactivo durante la instalación desde un script de shell

Cómo elegir una respuesta para un mensaje interactivo durante la instalación desde un script de shell

Estoy escribiendo un script de shell para instalar todas las aplicaciones necesarias en mi PC con Ubuntu de una sola vez (mientras puedo dar un paseo o hacer otra cosa). Para la mayoría de las aplicaciones, agregar -yal final de la apt-get installdeclaración ha funcionado bien para evitar la necesidad de participación del usuario. Mi script se parece a esto:

#!/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

Aunque ya no tengo que preocuparme por Do you want to continue? [Y/n]o Press [ENTER] to continue or ctrl-c to cancel adding it, el problema está en wireshark, que requiere una respuesta a un mensaje interactivo como se muestra a continuación:

Aviso de Wireshark

¿Cómo puedo evitar esta intervención obligatoria?

Respuesta1

Configurar eldebconfbase de datos:

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

Luego, instaleWireshark:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install wireshark

También es posible que desee suprimir la salida deapto-obtener. En ese caso:

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

Respuesta2

El sistema apt/dpkg tiene la capacidad de proporcionar instalaciones desatendidas o no interactivas.

Esto implica configurar la DEBIAN_FRONTENDvariable noninteractivey usar -yflag. Por ejemplo:

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

Si recibe errores, es posible que deba configurar la qopción para convencerse más claramente dpkgde que en realidad está realizando una instalación no interactiva: DEBIAN_FRONTEND=noninteractive apt-get -yq install [packagename].

En algunos casos, podría ser más fácil seguir las indicaciones para algunos de los paquetes que instale más adelante en ese mismo proceso de script/shell; en ese caso, querrá desexportar la DEBIAN_FRONTENDvariable:

unset DEBIAN_FRONTEND

Para preestablecer las opciones de configuración es útil tenerlo debconf-utilsinstalado, lo que servirá el comando debconf-get-selections:

sudo apt-get install debconf-utils

Recursos que pueden resultarle útiles

información relacionada