Tabela de Conteúdos

2.2.7 Atualizações automáticas

Atenção

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

Referências