Solución 1:
Si establece DEBIAN_FRONTEND=noninteractive
(para evitar que aparezcan las indicaciones de debconf) y agregue force-confold
y force-confdef
a tu /etc/dpkg/dpkg.cfg
archivo, debe tener una experiencia de instalación de paquetes completamente no interactiva. Cualquier paquete que aún le solicite información tiene un error crítico de lanzamiento (y lo digo como un adicto a la automatización y como desarrollador de Debian).
Solución 2:
Florian Lohoff publicó una forma de obtener lo que sugirió Womble en un solo comando:
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade
Por supuesto, también puede usar -o Dpkg::Options::="--force-confnew --force-confdef"
(busque la página de manual de dpkg para confnew). Sin embargo, no estoy seguro de en qué casos esto marcaría la diferencia. Personalmente, necesito la actualización no interactiva para actualizar las imágenes Vanilla, en cuyo caso supongo que siempre elijo el nuevo archivo de configuración (sin --force-confdef
) es algo razonable.
Solución 3:
Aunque la respuesta anterior de womble es generalmente buena, no funcionó para mí y tuve que investigar un poco más para estar 100% desatendido. Pensé en compartir el resultado de manera concisa para simplificar las cosas para futuros visitantes.
El siguiente es un script que se ejecutará de acuerdo con las recomendaciones de actualización de las notas de la versión de debian 8 (principalmente) junto con las banderas y las variables de entorno que lo harán desatendido. (el echo
Los correos electrónicos son solo para la depuración y podrían eliminarse, aunque recomiendo conservarlos para que, si el script se atasca, sepa dónde)
#!/bin/bash
apt-get remove apt-listchanges --assume-yes --force-yes &&
#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&
#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&
echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&
echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&
echo "executing clean" &&
apt-get --force-yes clean &&
echo "executing update" &&
apt-get update &&
echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&
echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade
Solución 4:
>=Apt 1.1
Si está utilizando Apt 1.1 o superior, --force-yes
ha quedado obsoleto, por lo que debe usar las opciones que comienzan con --allow
en cambio, p. --allow-downgrades
, --allow-remove-essential
, --allow-change-held-packages
.
Entonces el comando es:
DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::=--force-confold \
-o Dpkg::Options::=--force-confdef \
-y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
dist-upgrade
Fuente:CFE-2360:Hacer consciente de la versión del módulo del paquete apt_get.
Relacionado:
- apt-get update no interactivo
- ¿Cómo le pido a apt-get que omita los pasos de configuración interactivos posteriores a la instalación?
- Actualización apt no interactiva