Como automatizar a atualização do Debian via Crontab

image_pdfimage_print

Para atualizar um sistema Debian é tão simples como executar o comando abaixo como root:

apt-get update && apt-get upgrade

Caso tenha uma conta com sudo, basta:

sudo apt-get update && sudo apt-get upgrade

Este comando no entanto é interativo. Pode ser automatizado de um processo de execução manual para rodar como um cron job. Abaixo, presumirei que está logado como root.

Execute o comando:

crontab -e

Como um exemplo, iremos atualizar os sistemas as 2 da manhã. (Atenção que esta execução irá falhar. Ver abaixo como solucionar e qual problema ocorrerá);

00 02 * * * apt-get update 2>&1 && apt-get -y upgrade 2>&1

Um processo típico de atualização exige a confirmação da transação antes de executar. Por isto, no cron, o upgrade precisa ser não interativo. Isto foi feito utilizando o parâmetro -y, assumindo sim para todas as questões.

As 2 da manhã, executado o comando, teremos o seguinte erro:

debconf: unable to initialize frontend: Dialog   
debconf: (TERM is not set, so the dialog frontend is not usable.)    
debconf: falling back to frontend: Readline   
debconf: unable to initialize frontend: Readline   
debconf: (This frontend requires a controlling tty.)   
debconf: falling back to frontend: Teletype  
dpkg-preconfigure:unable to re-open stdin: Fetched 49.5 MB in 17s (2,840 kB/s)  
dpkg: warning: 'ldconfig' not found in PATH or not executable  
dpkg: warning: 'start-stop-daemon' not found in PATH or not executable  
dpkg: error: 2 expected programs not found in PATH or not executable  
Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin  
E: Sub-process /usr/bin/dpkg returned an error code (2)

Como podemos ver, há 2 problemas. O primeiro, um front-end é experado e não pode ser encontrado. O segundo, o PATH de localização dos comandos não pode ser corretamente configurado.

Para corrigir os problemas, reexecute o comando crontab -e e insira as seguintes linhas para configurar corretamente o ambiente.

DEBIAN_FRONTEND=noninteractive  
PATH=/usr/sbin:/usr/bin:/sbin:/bin  
00 02 * * * apt-get update 2>&1 && apt-get -y upgrade 2>&1

Com isto, o processo de atualização do sistema estará automatizado, economizando tempo ao mesmo tempo que mantendo o sistema atualizado e protegido com as últimas atualizações de segurança.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!