Estoy buscando automatizar algunas instalaciones de paquetes a través de un script bash; se instalarán en un sistema de archivos chroot preexistente. Sin embargo, algunos de los paquetes implican la entrada interactiva del usuario (es decir, ddclient solicita seleccionar un proveedor de servicios de DNS dinámico), que no he podido automatizar tan fácilmente.
La preconfiguración de debconf parece ser la forma más común de automatizar instalaciones de paquetes interactivos, pero todos los ejemplos que he leído implican que es para una instalación completa de Debian en lugar de solo paquetes individuales.
He estado siguiendo este Cómo automatizar instalaciones interactivas de paquetes Debian, pero en realidad no explica los detalles.
¡Gracias de antemano!
Respuesta aceptada:
A falta de usar una herramienta de administración de configuración e implementación "adecuada" como Ansible o Salt, debconf
la preconfiguración puede ser perfectamente suficiente para preconfigurar los paquetes de Debian. No se limita en absoluto a instalaciones completas; se puede aplicar a cualquier número de paquetes.
La forma más sencilla de comenzar es configurar manualmente los paquetes que desea instalar, instalando el paquete y respondiendo las preguntas. Luego ejecute debconf-get-selections
(del debconf-utils
paquete); eso enumerará todas las configuraciones que están almacenadas, incluidas las de los paquetes que acaba de instalar, junto con el texto de la pregunta en los comentarios, para que pueda encontrar fácilmente las preguntas que desea preconfigurar. El formato es
<package> <debconf key> <type> <value>
Por ejemplo
# System's default paper size:
# Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet
libpaper1 libpaper/defaultpaper select a4
Guarde las configuraciones que desea preconfigurar en un archivo, luego ejecute debconf-set-selections
(en el debconf
paquete) en el sistema de destino, ya sea con el archivo disponible localmente y nombrado como el primer argumento, o su contenido canalizado:
cat preseed-file | ssh remotehost debconf-set-selections
Haz esto antes instalando los paquetes en el sistema de destino.