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 -y
al final de la apt-get install
declaració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:
¿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_FRONTEND
variable noninteractive
y usar -y
flag. Por ejemplo:
export DEBIAN_FRONTEND=noninteractive
apt-get -y install [packagename]
Si recibe errores, es posible que deba configurar la q
opción para convencerse más claramente dpkg
de 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_FRONTEND
variable:
unset DEBIAN_FRONTEND
Para preestablecer las opciones de configuración es útil tenerlo debconf-utils
instalado, lo que servirá el comando debconf-get-selections
:
sudo apt-get install debconf-utils