Atualizações automáticas · 9 min read · Jan 14, 2026
Atualizações automáticas com unattended-upgrades no Debian e Ubuntu

As versões do Linux recebem atualizações com frequência, e as atualizações de segurança devem ser instaladas prontamente. Debian e Ubuntu usam o sistema APT, e embora seja relativamente fácil instalar todas as atualizações pendentes manualmente, o administrador pode não se lembrar de fazê-lo ou prefere dormir à noite em vez de verificar atualizações. Este artigo é principalmente para instalações de servidor.
Atualizar e instalar pacotes manualmente usando apt upgrade ainda é possível ao usar unattended-upgrades. Se uma atualização iniciada por unattended-upgrades estiver em execução quando o apt for usado a partir da linha de comando, o sistema apt informa ao usuário que uma operação já está em andamento e o usuário deve esperar até que ela termine antes de continuar a emitir comandos apt.
Uma maneira fácil para administradores ocupados
Instale unattended-upgrades, verifique se está habilitado e monitore seu funcionamento a partir dos arquivos de log.
apt install unattended-upgradesdpkg-reconfigure -plow unattended-upgradesO comando dpkg-reconfigure -mostra uma caixa de diálogo perguntando sim ou não para baixar e instalar automaticamente atualizações de segurança estáveis. Verifique se a resposta foi sim.
unattended-upgrades verifica atualizações duas vezes por dia em horários aleatórios e instala atualizações de segurança estáveis.
Monitore o que está acontecendo lendo os arquivos de log no diretório /var/log/unattended-upgrades/ e no arquivo /var/log/dpkg.log.
Onde encontrar documentação
O arquivo de configuração /etc/apt/apt.conf.d/50unattended-upgrades tem documentação nos comentários. Este documento se referirá a esse arquivo a partir de agora como 50unattended-upgrades.
O arquivo readme /usr/share/doc/unattended-upgrades/README.md.gz tem instruções úteis. Ele pode ser lido com o comando zless (disponível no pacote gzip). Este documento se referirá a esse arquivo a partir de agora como README.
A wiki do Debian tem uma página https://wiki.debian.org/UnattendedUpgrades.
A página de documentação do servidor Ubuntu tem um capítulo “Atualizações Automáticas” sobre unattended-upgrades.
Página de manual do unattended-upgrade, man unattended-upgrade.
Configuração avançada
Usando a maneira fácil, você notará que nem todas as atualizações são instaladas automaticamente. Você também pode querer mais controle sobre o que está acontecendo automaticamente, além de instalar atualizações.
O arquivo de configuração /etc/apt/apt.conf.d/50unattended-upgrades tem documentação incluída nos comentários, então leia o arquivo para examinar quais configurações estão disponíveis. Muito útil é configurar unattended-upgrades para enviar e-mails quando algo acontece.
É importante saber que o arquivo de configuração é criado pela instalação ou atualização do pacote unattended-upgrades, então, quando o próprio unattended-upgrades é atualizado ou ao ir para a próxima versão do SO, as edições feitas neste arquivo causam conflitos que devem ser resolvidos manualmente. O arquivo de documentação README sugere criar o arquivo 52unattended-upgrades-local em vez de modificar o arquivo de configuração original.
Se você quiser, pode verificar o arquivo /etc/apt/apt.conf.d/20auto-upgrades que contém estas linhas:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Se você executou o comando dpkg-reconfigure -e respondeu sim, as linhas devem estar lá. As linhas controlam a habilitação do unattended-upgrades.
Enviar e-mail
Para o envio de e-mail funcionar, o host deve ter um sistema de e-mail funcionando que possa enviar e-mails. Verifique isso primeiro.
Habilite o envio de e-mail do unattended-upgrades editando o arquivo de configuração 52unattended-upgrades-local (crie o arquivo se não existir no diretório /etc/apt/apt.conf/). Copie a linha
//Unattended-Upgrade::Mail "";do 50unattended-upgrades, descomente-a e adicione o endereço de e-mail de destino entre as “-aspas.
Há também uma configuração para definir se o e-mail é sempre enviado quando o unattended-upgrades faz uma atualização, ou apenas em erros.
// Defina este valor como "true" para receber e-mails apenas em erros. O padrão
// é sempre enviar um e-mail se Unattended-Upgrade::Mail estiver definido
//Unattended-Upgrade::MailOnlyOnError "false";Se você quiser mudar a configuração, copie as linhas para 52unattended-upgrades-local, descomente a linha de configuração e mude “false” para “true”.
Verificar com
unattended-upgrade --dry-run -dé uma boa ideia após modificar o arquivo de configuração.
Pelo menos no Debian 10, 11 e Ubuntu 22.04, a instalação do unattended-upgrades cria um link simbólico unattended-upgrades para unattended-upgrade no diretório /usr/bin/ e/ou /bin/, então ambos os comandos funcionam da mesma forma.
$ ls -lhi /bin/unattended-upgrade*
11404505 -rwxr-xr-x 1 root root 98K tammi 15 2022 /bin/unattended-upgrade
11407087 lrwxrwxrwx 1 root root 18 tammi 15 2022 /bin/unattended-upgrades -> unattended-upgradeAdicionar repositório
Adicionar um repositório para atualizar automaticamente é feito adicionando linhas ao Unattended-Upgrade::Origins-Pattern. Há documentação sobre isso no arquivo de configuração.
O README instrui as configurações no arquivo de configuração posterior 52unattended-upgrades-local para substituir as configurações padrão. Eu tentei e descobri que definir Unattended-Upgfade::Origins-Pattern não substitui completamente o que foi definido no arquivo padrão, em vez disso, é adicionado aos padrões. Portanto, não é necessário copiar o padrão completo Unattended-Upgrade::Origins-Pattern, ele pode ser adicionado.
Por exemplo, o pacote goaccess não é atualizado automaticamente quando é instalado do Repositório Oficial GoAccess. Ele seria atualizado automaticamente se fosse instalado do repositório Debian usual (está disponível em ambos). Adicionar o repositório GoAccess ao Origins-Pattern faz com que o unattended-upgrades faça a atualização.
Examine a situação com apt list –upgradable:
root@posti:~# LANG=C apt list --upgradable
Listing... Done
goaccess/unknown 2:1.6.3-buster amd64 [upgradable from: 2:1.6.2-buster]
php-tcpdf/buster-backports 6.5.0+dfsg1-1~bpo10+1 all [upgradable from: 6.3.5+dfsg1-1~bpo10+1]
root@posti:~#Então, há dois pacotes que não foram atualizados automaticamente pelo unattended-upgrades. Examinando goaccess, mostra que ele vem do Repositório Oficial GoAccess (e uma versão mais antiga do repositório Debian usual).
root@posti:~# LANG=C apt policy goaccess
goaccess:
Installed: 2:1.6.2-buster
Candidate: 2:1.6.3-buster
Version table:
2:1.6.3-buster 500
500 https://deb.goaccess.io buster/main amd64 Packages
*** 2:1.6.2-buster 100
100 /var/lib/dpkg/status
1:1.2-4+b10 500
500 http://mirror.hetzner.de/debian/packages buster/main amd64 Packages
500 http://deb.debian.org/debian buster/main amd64 Packages
root@posti:~#Executar unattended-upgrade –dry-run -d mostra quais origens os pacotes não instalados têm. Isso pode ajudar a descobrir o que precisa ser adicionado ao Origins-Pattern.
Examinando o log da última execução do unattended upgrades mostra quais origens são consideradas ao atualizar automaticamente:
2022-09-05 08:28:08,955 INFO Checking if system is running on battery is skipped. Please install
powermgmt-base package to check power status and skip installing updates when the system
is running on battery.
2022-09-05 08:28:08,960 INFO Initial blacklist :
2022-09-05 08:28:08,960 INFO Initial whitelist:
2022-09-05 08:28:08,960 INFO Starting unattended upgrades script
2022-09-05 08:28:08,960 INFO Allowed origins are:
origin=Debian,codename=buster,label=Debian,
origin=Debian,codename=buster,label=Debian-SecurityO repositório GoAccess ainda não está lá, então agora eu o adiciono a /etc/apt/apt.conf.d/52unattended-upgrades-local.
Como um aparte, se você instalou unattended-upgrades em um laptop, considere instalar powermgmt-base. Usando isso, o unattended-upgrades não inicia atualizações quando está funcionando com energia da bateria, como a mensagem de informação no log informa. Se estiver rodando em um servidor que está sempre ligado à energia, essa mensagem de informação não é mais exibida com Unattended-Upgrade::OnlyOnACPower “false”; adicionada à configuração.
Unattended-Upgrade::Origins-Pattern {
// Taleman adicionou GoAccess 2022-09-05
"o=GoAccess Repository, n=buster, l=Official GoAccess Repository";
};
Unattended-Upgrade::OnlyOnACPower "false";A política apt não mostrou o campo a para GoAccess, então usei o, n e l. Encontre informações sobre esses campos no README.
A substituição de variáveis é suportada para ${distro_id} que contém a saída de lsb_release -i e ${distro_codename} que contém a saída de lsb_release -c. Portanto, em vez de n=buster, eu poderia ter escrito n=${distro_codename}.
Havia dois pacotes que não foram atualizados automaticamente, o outro que ainda não foi atualizado é o php-tcpdf. Ele pode, é claro, ser atualizado com apt upgrade, mas pode ser adicionado ao unattended-upgrades para ser atualizado automaticamente. O procedimento é o mesmo que para goaccess.
Primeiro, examine a situação com apt policy php-tcpdf. Isso mostra que ele é instalado da seção do repositório Debian buster-backports.
Do unattended-upgrades.log, pode-se ver que buster-backports não está entre as origens permitidas. Está no arquivo 50unattended-upgrades, mas comentado. Para habilitá-lo, copie a linha
// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";para 52unattended-upgrades-local dentro da configuração do Origins-Pattern e descomente.
Após editar o arquivo, verifique com unattended-upgrades –dry-run -d se o repositório adicionado agora está entre as “Origens permitidas” e php-tcpdf está entre os pacotes que serão atualizados.
Controlar horários
Unattended-upgrades é executado em horários aleatórios para aliviar a carga nos servidores de repositório. Isso é para evitar picos de carga grandes que aconteceriam se todos os hosts começassem a fazer atualizações ao mesmo tempo. Pense cuidadosamente se você decidir mudar esse comportamento. Se você executar seu próprio repositório ou espelho de repositório, então os picos de carga atingem seu servidor de repositório e você evita incomodar os administradores de repositórios na Internet.
É o systemd que controla a que horas o unattended-upgrades começa. O arquivo /lib/systemd/system/apt-daily.timer tem uma seção Timer que inicia atividades de download do apt duas vezes ao dia com um atraso aleatório de 12 horas. Eu sugiro que você não modifique isso, ou tenha razões muito boas para modificar.
O restante das configurações de tempo é feito nos arquivos 50unattended-upgrades e 52unattended-upgrades-local.
A configuração Unattended-Upgrade::Update-Days controla os dias da semana em que o unattended-upgrades é executado. O padrão é vazio, o que significa que é executado todos os dias. Pode ser configurado para rodar, por exemplo, apenas no sábado e no domingo.
Reinicialização automática
Unattended-upgrades pode ser configurado para reiniciar quando as atualizações instaladas exigirem uma reinicialização. Isso pode ser configurado para acontecer imediatamente ou em um horário desejado. Essas configurações usam as configurações
//Unattended-Upgrade::Automatic-Reboot "false";
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";O padrão é sem reinicialização automática. Se você mudar a configuração para “true”, a reinicialização acontece imediatamente após a instalação da atualização. Automatic-Reboot-Time pode ser definido para fazer a reinicialização em um horário desejado se houver atualizações instaladas que exijam uma reinicialização.
Blacklisting, Whitelisting
Uma lista negra impede que um pacote, que de outra forma seria atualizado pelo unattended-upgrades, seja atualizado. A configuração Package-Blacklist contém expressões regulares. Se o nome do pacote corresponder, ele é excluído da atualização automática.
Eu não usei esse recurso, acho que pode ser mais útil se estiver executando uma versão de desenvolvimento onde faz sentido impedir a atualização automática de pacotes críticos. O arquivo de configuração 50unattended-upgrades fornece exemplos de pacotes na lista negra.
O README fala sobre a configuração Package-Whitelist. A descrição diz “Apenas pacotes que correspondem às expressões regulares nesta lista serão marcados para atualização.” Não oferece exemplos para esclarecer em quais casos seria desejável definir a lista branca. A partir das minhas experiências, parece que adicionar pacotes à lista branca significa que apenas esses pacotes são atualizados automaticamente, nada mais.
Conclusão
Agora você sabe o que o unattended-upgrades pode fazer e como fazê-lo fazer o que você deseja.
Há casos em que o unattended-upgrades não faz a atualização porque o comando apt upgrade mantém um pacote retido. Isso acontece quando a atualização removeria um pacote ou instalaria um pacote que não foi instalado anteriormente. Para fazer a atualização acontecer, faça isso você mesmo com o comando apt full-upgrade que pode remover pacotes ou instalar novos pacotes que não foram instalados anteriormente. Se as atualizações não atendidas estiverem configuradas para enviar e-mail, o e-mail conterá a linha
Pacotes com origem atualizável, mas mantidos:Um exemplo final de 52unattended-upgrades-local de um dos meus hosts:
Unattended-Upgrade::Origins-Pattern {
// Taleman adicionou 2022-09-05
"o=GoAccess Repository, n=buster, l=Official GoAccess Repository";
"o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";
"origin=deb.sury.org,archive=${distro_codename}";
};
Unattended-Upgrade::Mail "[email protected]";
Unattended-Upgrade::OnlyOnACPower "false";Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.