Product SiteDocumentation Site

6.9. Actualizaciones automáticas

Dado que Falcot Corp tiene muchas máquinas pero personal limitado, sus administradores intentan hacer las actualizaciones tan automáticas como sea posible. Los programas a cargo de esos procesos deben, por lo tanto, ejecutar sin intervención humana.

6.9.1. Configuración de dpkg

Como ya mencionamos (revise el recuadro YENDO MÁS ALLÁ Evitando preguntas sobre los archivos de configuración), se le puede indicar a dpkg que no pida confirmación al reemplazar un archivo de configuración (con las opciones --force-confdef --force-confold). Sin embargo, las interacciones pueden tener otros tres orígenes: algunas provienen de APT mismo, algunas son gestionadas por debconf y otras ocurren en la línea de órdenes debido a scripts de configuración de paquetes (algunas veces gestionadas por ucf).

6.9.2. Configuración de APT

En el caso de APT es simple: la opción -y (o --asume-yes) le indica a APT que considere que la respuesta a todas las preguntas será afirmativa («yes»).

6.9.3. Configuración de debconf

El caso de debconf merece más detalles. El programa fue diseñado, desde su concepción, para controlar la relevancia y volúmen de las preguntas mostradas al usuario así como también la forma en la que se mostrarán. Es por esto que su configuración requiere una prioridad mínima para las preguntas; sólo se mostrarán las preguntas sobre la prioridad mínima. debconf asume la respuesta predeterminada (definida por el encargado del paquete) para las preguntas que decidió evitar.
El otro elemento de configuración relevante es la interfaz utilizada. Si selecciona la opción noninteractive, se desactivará toda interacción con el usuario. Si un paquete intenta mostrar una nota informativa, ésta será enviada al administrador por email.
Para reconfigurar debconf utilice dpkg-reconfigure del paquete debconf; la orden necesaria es dpkg-reconfigure debconf. Es importante saber que, si es necesario, los valores configurados pueden sobreescribirse temporalmente con variables de entorno (por ejemplo DEBIAN_FRONTEND controla la interfaz, como está documentado en la página de manual debconf(7)).

6.9.4. Manejo de interacciones de línea de órdenes

La última fuente de interacciones, y la más difícil de la que deshacerse, son los scripts de configuración ejecutados por dpkg. Desafortunadamente no hay solución estándar y ninguna respuesta es mucho mejor que la otra.
El enfoque común es eliminar la entrada estándar redireccionando hacia ella el contenido vacío de /dev/null con programa </dev/null o proveerle un flujo interminable de caracteres de nueva línea. Ninguno de estos métodos es 100% fiable, pero generalmente provocan que se utilicen las respuestas predeterminadas, ya que la mayoría de los scripts consideran una falta de respuesta como aceptación del valor predeterminado.

6.9.5. La combinación milagrosa

Combinando los elementos anteriores es posible diseñar un script pequeño pero confiable que pueda realizar actualizaciones automáticas.

Ejemplo 6.5. Script de actualización no-interactivo

export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade