Tabela de Conteúdos
2.2.7 Atualizações automáticas
Para notificar por email o administrador do sistema, o pacote unattended-upgrades depende da instalação de um agente de transporte de e-mail ou MTA (Mail Transfer Agent). É portanto necessária a instalação de um 5.2.1 Servidor SMTP: Postfix antes proceder à instalação deste pacote.
Uma preocupação do administrador é manter sempre o sistema com as mais recentes atualizações e correções de software. O pacote unattended-upgrades permite a instalação das atualizações dos pacotes de software de uma forma totalmente automática.
Instalação
root@server:~# apt install unattended-upgrades
Configuração
Por uma questão de segurança, a instalação do pacote unattended-upgrades não activa imediatamente as atualizações automáticas. Estas devem ser activadas no ficheiro /etc/apt/apt.conf.d/20auto-upgrades. Um exemplo desse ficheiro está disponível na pasta /usr/share/unattended-upgrades/, bastando copiá-lo para a pasta /etc/apt/apt.conf.d/:
root@server:~# cp /usr/share/unattended-upgrades/20auto-upgrades /etc/apt/apt.conf.d/
O ficheiro de configuração /etc/apt/apt.conf.d/20auto-upgrades deverá ativar a atualização da base de dados dos pacotes disponíveis, ativar a atualização automática dos pacotes instalados e efetuar uma limpeza semanal dos ficheiros descarregados:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7"; APT::Periodic::Download-Upgradeable-Packages "1";
No ficheiro de configuração /etc/apt/apt.conf.d/50unattended-upgrades podemos configurar a versão do Debian utilizada para a atualizações:
# [...] // Within lines unattended-upgrades allows 2 macros whose values are // derived from /etc/debian_version: // ${distro_id} Installed origin. // ${distro_codename} Installed codename (eg, "jessie") Unattended-Upgrade::Origins-Pattern { // Codename based matching: // This will follow the migration of a release through different // archives (e.g. from testing to stable and later oldstable). "o=Debian,n=stretch"; "o=Debian,n=stretch-updates"; // "o=Debian,n=stretch-proposed-updates"; "o=Debian,n=stretch,l=Debian-Security"; # [...]
Notificar por email o administrador do sistema sempre que são efetuadas atualizações:
# [...] // Send email to this address for problems or packages upgrades // If empty or unset then no email is sent, make sure that you // have a working mail setup on your system. A package that provides // 'mailx' must be installed. E.g. "user@example.com" Unattended-Upgrade::Mail "root"; # [...]
Reiniciar o serviço para ter em conta as alterações:
root@server:~# systemctl restart unattended-upgrades
A lista de pacotes disponível será atualizada diariamente e, caso hajam atualizações disponíveis, estas serão instaladas de modo automático.
Verificação
Podemos verificar o funcionamento:
root@server:~# unattended-upgrades --dry-run --debug Initial blacklisted packages: Initial whitelisted packages: Starting unattended upgrades script Allowed origins are: ['o=Debian,n=stretch', 'o=Debian,n=stretch-updates', 'o=Debian,n=stretch,l=Debian-Security'] pkgs that look like they should be upgraded: Fetched 0 B in 0s (0 B/s) fetch.run() result: 0 blacklist: [] whitelist: [] No packages found that can be upgraded unattended and no pending auto-removals
Utilização
Sempre que for efetuada uma atualização, é enviado um email ao administrador do sistema:
Subject: unattended-upgrades result for 'server': 'True' To: root@home.lan Date: Thu, 30 Apr 2015 01:27:55 +0100 (WEST) From: root@home.lan (root) Unattended upgrade returned: True Packages that were upgraded: curl libcurl3 libcurl3-gnutls=20 Unattended-upgrades log: Initial blacklisted packages:=20 Initial whitelisted packages:=20 Starting unattended upgrades script Allowed origins are: ['o=3DDebian,n=3Djessie', 'o=3DDebian,n=3Djessie-propo= sed-updates', 'o=3DDebian,n=3Djessie,l=3DDebian-Security', 'origin=3DDebian= ,archive=3Djessie,label=3DDebian-Security'] Packages that will be upgraded: curl libcurl3 libcurl3-gnutls Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.= log' All upgrades installed
Periodicamente, poderá ser verificado se houve atualizações, bastando consultar os ficheiros de registo /var/log/unattended-upgrades/unattended-upgrades.log:
2017-07-08 06:24:05,337 INFO Initial blacklisted packages: 2017-07-08 06:24:05,342 INFO Initial whitelisted packages: 2017-07-08 06:24:05,342 INFO Starting unattended upgrades script 2017-07-08 06:24:05,342 INFO Allowed origins are: ['o=Debian,n=stretch', 'o=Debian,n=stretch-updates', 'o=Debian,n=stretch-proposed-updates', 'o=Debian,n=stretch,l=Debian-Security', 'origin=Debian,codename=stretch,label=Debian-Security'] 2017-07-08 06:24:07,485 INFO No packages found that can be upgraded unattended and no pending auto-removals 2017-07-09 06:51:40,881 INFO Initial blacklisted packages: 2017-07-09 06:51:40,881 INFO Initial whitelisted packages: 2017-07-09 06:51:40,881 INFO Starting unattended upgrades script 2017-07-09 06:51:40,881 INFO Allowed origins are: ['o=Debian,n=stretch', 'o=Debian,n=stretch-updates', 'o=Debian,n=stretch-proposed-updates', 'o=Debian,n=stretch,l=Debian-Security', 'origin=Debian,codename=stretch,label=Debian-Security'] 2017-07-09 06:51:43,013 INFO No packages found that can be upgraded unattended and no pending auto-removals