Mises à jour automatiques · 10 min read · Jan 14, 2026

Mises à jour automatiques avec unattended-upgrades sur Debian et Ubuntu

Les versions de Linux reçoivent souvent des mises à jour, et les mises à jour de sécurité doivent être installées rapidement. Debian et Ubuntu utilisent le système APT, et bien qu’il soit relativement facile d’installer toutes les mises à jour en attente manuellement, l’administrateur peut ne pas se souvenir de le faire ou préférer dormir la nuit plutôt que de vérifier les mises à jour. Cet article est principalement destiné aux installations de serveurs.

Mettre à jour et installer des paquets manuellement en utilisant apt upgrade est toujours possible lors de l’utilisation de unattended-upgrades. Si une mise à niveau lancée par unattended-upgrades est en cours d’exécution lorsque apt est utilisé depuis la ligne de commande, le système apt informe l’utilisateur qu’une opération est déjà en cours et que l’utilisateur doit attendre qu’elle se termine avant de continuer à émettre des commandes apt.

Une façon facile pour les administrateurs occupés

Installez unattended-upgrades, vérifiez qu’il est activé, et surveillez son fonctionnement à partir des fichiers journaux.

apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

La commande dpkg-reconfigure -affiche une boîte de dialogue demandant oui ou non pour télécharger et installer automatiquement les mises à jour de sécurité stables. Vérifiez qu’il est répondu oui.

unattended-upgrades vérifie les mises à jour deux fois par jour à des moments aléatoires et installe les mises à jour de sécurité stables.

Surveillez ce qui se passe en lisant les fichiers journaux dans le répertoire /var/log/unattended-upgrades/ et le fichier /var/log/dpkg.log.

Où trouver la documentation

Le fichier de configuration /etc/apt/apt.conf.d/50unattended-upgrades contient de la documentation dans les commentaires. Ce document se réfère à ce fichier à partir de maintenant comme 50unattended-upgrades.

Le fichier readme /usr/share/doc/unattended-upgrades/README.md.gz contient des instructions utiles. Il peut être lu avec la commande zless (disponible dans le paquet gzip). Ce document se réfère à ce fichier à partir de maintenant comme README.

Le wiki Debian a une page https://wiki.debian.org/UnattendedUpgrades.

La page de documentation du serveur Ubuntu a un chapitre “Mises à jour automatiques” sur unattended-upgrades.

La page de manuel de unattended-upgrade, man unattended-upgrade.

Configuration avancée

En utilisant la méthode facile, vous remarquerez que toutes les mises à jour ne sont pas installées automatiquement. Vous pouvez également vouloir plus de contrôle sur ce qui se passe automatiquement en plus de l’installation des mises à jour.

Le fichier de configuration /etc/apt/apt.conf.d/50unattended-upgrades contient de la documentation incluse dans les commentaires, donc lisez le fichier pour examiner quelles configurations sont disponibles. Il est très utile de configurer unattended-upgrades pour envoyer des e-mails lorsque quelque chose se produit.

Il est important de savoir que le fichier de configuration est créé par l’installation ou la mise à niveau du paquet unattended-upgrades, donc lorsque unattended-upgrades lui-même est mis à niveau ou lors du passage à la prochaine version du système d’exploitation, les modifications apportées à ce fichier provoquent des conflits qui doivent être résolus manuellement. Le fichier de documentation README suggère de créer le fichier 52unattended-upgrades-local au lieu de modifier le fichier de configuration original.

Si vous le souhaitez, vous pouvez vérifier le fichier /etc/apt/apt.conf.d/20auto-upgrades qu’il contient ces lignes :

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Si vous avez exécuté la commande dpkg-reconfigure -et répondu oui, les lignes devraient être là. Les lignes contrôlent l’activation de unattended-upgrades.

Envoyer un e-mail

Pour que l’envoi d’e-mails fonctionne, l’hôte doit avoir un système de messagerie fonctionnel capable d’envoyer des e-mails. Vérifiez cela d’abord.

Activez l’envoi d’e-mails depuis unattended-upgrades en modifiant le fichier de configuration 52unattended-upgrades-local (créez le fichier s’il n’existe pas dans le répertoire /etc/apt/apt.conf/). Copiez la ligne

//Unattended-Upgrade::Mail "";

à partir de 50unattended-upgrades, décommentez-la et ajoutez l’adresse e-mail cible entre les guillemets.

Il existe également un paramètre pour configurer si un e-mail est toujours envoyé lorsque unattended-upgrades effectue une mise à niveau, ou uniquement en cas d’erreurs.

// Définissez cette valeur sur "true" pour recevoir des e-mails uniquement en cas d'erreurs. La valeur par défaut // est d'envoyer toujours un e-mail si Unattended-Upgrade::Mail est défini //Unattended-Upgrade::MailOnlyOnError "false";

Si vous souhaitez modifier le paramètre, copiez les lignes dans 52unattended-upgrades-local, décommentez la ligne de paramètre et changez “false” en “true”.

Vérifier avec

unattended-upgrade --dry-run -d

est une bonne idée après avoir modifié le fichier de configuration.

Au moins sur Debian 10, 11, et Ubuntu 22.04, l’installation de unattended-upgrades crée un lien symbolique unattended-upgrades vers unattended-upgrade dans le répertoire /usr/bin/ et/ou /bin/, donc les deux commandes fonctionnent de la même manière.

$ 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-upgrade

Ajouter un dépôt

Ajouter un dépôt à partir duquel mettre à jour automatiquement se fait en ajoutant des lignes à Unattended-Upgrade::Origins-Pattern. Il y a de la documentation à ce sujet dans le fichier de configuration.

Le README indique que les paramètres dans le fichier de configuration ultérieur 52unattended-upgrades-local remplacent les paramètres par défaut. J’ai essayé et j’ai constaté que le paramètre Unattended-Upgfade::Origins-Pattern ne remplace pas complètement ce qui a été défini dans le fichier par défaut, au lieu de cela, il est ajouté aux valeurs par défaut. Il n’est donc pas nécessaire de copier l’intégralité du paramètre par défaut Unattended-Upgrade::Origins-Pattern, il peut être ajouté.

Par exemple, le paquet goaccess ne se met pas à niveau automatiquement lorsqu’il est installé à partir du dépôt officiel de GoAccess. Il se mettrait à niveau automatiquement s’il était installé à partir du dépôt Debian habituel (il est disponible dans les deux). Ajouter le dépôt GoAccess au Origins-Pattern fait que unattended-upgrades effectue la mise à niveau.

Examinez la situation avec 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:~#

Donc, il y a deux paquets qui n’ont pas été mis à niveau automatiquement par unattended-upgrades. L’examen de goaccess montre qu’il provient du dépôt officiel de GoAccess (et d’une version antérieure du dépôt Debian habituel).

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:~#

Exécuter unattended-upgrade –dry-run -d montre quelles origines les paquets non installés ont. Cela peut aider à déterminer ce qui doit être ajouté à Origins-Pattern.

L’examen du journal de la dernière exécution de mises à jour non surveillées montre quelles origines sont considérées lors de la mise à niveau automatique :

2022-09-05 08:28:08,955 INFO Vérification si le système fonctionne sur batterie est ignorée. Veuillez installer
    le paquet powermgmt-base pour vérifier l'état de l'alimentation et ignorer l'installation des mises à jour lorsque le système
    fonctionne sur batterie.
2022-09-05 08:28:08,960 INFO Liste noire initiale : 
2022-09-05 08:28:08,960 INFO Liste blanche initiale : 
2022-09-05 08:28:08,960 INFO Démarrage du script de mises à jour non surveillées
2022-09-05 08:28:08,960 INFO Origines autorisées : 
origin=Debian,codename=buster,label=Debian, 
origin=Debian,codename=buster,label=Debian-Security

Le dépôt GoAccess n’est pas encore là, donc maintenant je l’ajoute à /etc/apt/apt.conf.d/52unattended-upgrades-local.

En passant, si vous avez installé unattended-upgrades sur un ordinateur portable, envisagez d’installer powermgmt-base. En utilisant cela, unattended-upgrades ne commence pas les mises à niveau lorsque l’ordinateur fonctionne sur batterie, comme le message d’information dans le journal l’indique. Si vous exécutez un serveur qui fonctionne toujours sur l’alimentation secteur, ce message d’information n’est plus affiché avec Unattended-Upgrade::OnlyOnACPower “false” ; ajouté à la configuration.

Unattended-Upgrade::Origins-Pattern {
// Taleman ajouté GoAccess 2022-09-05
        "o=GoAccess Repository, n=buster, l=Official GoAccess Repository";
};
Unattended-Upgrade::OnlyOnACPower "false";

La politique apt n’a pas montré le champ a pour GoAccess, donc j’ai utilisé o, n et l. Trouvez des informations sur ces champs dans le README.

La substitution de variables est prise en charge pour ${distro_id} qui contient la sortie de lsb_release -i et ${distro_codename} qui contient la sortie de lsb_release -c. Donc au lieu de n=buster, j’aurais pu écrire n=${distro_codename}.

Il y avait deux paquets qui n’ont pas été mis à niveau automatiquement, l’autre qui n’est toujours pas mis à niveau est php-tcpdf. Il peut bien sûr être mis à niveau avec apt upgrade mais il peut être ajouté à unattended-upgrades pour être mis à niveau automatiquement. La procédure est la même que pour goaccess.

Examinez d’abord la situation avec apt policy php-tcpdf. Cela montre qu’il est installé à partir de la section buster-backports du dépôt Debian.

À partir de unattended-upgrades.log, on peut voir que buster-backports n’est pas parmi les origines autorisées. Il est dans le fichier 50unattended-upgrades mais commenté. Pour l’activer, copiez la ligne

// "o=Debian Backports,a=${distro_codename}-backports,l=Debian Backports";

dans 52unattended-upgrades-local à l’intérieur du paramètre Origins-Pattern et décommentez.

Après avoir modifié le fichier, vérifiez avec unattended-upgrades –dry-run -d que le dépôt ajouté est maintenant parmi les “Origines autorisées” et que php-tcpd est parmi les paquets qui seront mis à niveau.

Contrôler les heures

Unattended-upgrades s’exécute à des heures aléatoires pour alléger la charge sur les serveurs de dépôt. Cela vise à éviter de fortes pics de charge qui se produiraient si tous les hôtes commençaient à faire des mises à jour en même temps. Réfléchissez bien si vous décidez de changer ce comportement. Si vous exécutez votre propre dépôt ou miroir de dépôt, alors les pics de charge touchent votre serveur de dépôt et vous évitez d’ennuyer les administrateurs des dépôts sur Internet.

C’est systemd qui contrôle à quelles heures unattended-upgrades commence. Le fichier /lib/systemd/system/apt-daily.timer a une section Timer qui démarre les activités de téléchargement apt deux fois par jour avec un délai aléatoire de 12 heures. Je vous suggère de ne pas modifier cela, ou d’avoir de très bonnes raisons de le modifier.

Le reste des configurations temporelles se fait dans les fichiers 50unattended-upgrades et 52unattended-upgrades-local.

Le paramètre Unattended-Upgrade::Update-Days contrôle les jours de la semaine où unattended-upgrades s’exécute. La valeur par défaut est vide, ce qui signifie qu’il s’exécute tous les jours. Il peut être configuré pour s’exécuter par exemple uniquement le samedi et le dimanche.

Redémarrage automatique

Unattended-upgrades peut être configuré pour redémarrer lorsque les mises à jour installées nécessitent un redémarrage. Cela peut être configuré pour se produire immédiatement ou à un moment souhaité. Ces configurations utilisent les paramètres

//Unattended-Upgrade::Automatic-Reboot "false"; //Unattended-Upgrade::Automatic-Reboot-WithUsers "true"; //Unattended-Upgrade::Automatic-Reboot-Time "02:00";

La valeur par défaut est pas de redémarrage automatique. Si vous changez le paramètre en “true”, le redémarrage se produit immédiatement après l’installation de la mise à niveau. Automatic-Reboot-Time peut être défini pour effectuer le redémarrage à un moment souhaité si des mises à jour installées nécessitent un redémarrage.

Liste noire, Liste blanche

Une liste noire empêche un paquet, qui autrement serait mis à niveau par unattended-upgrades, d’être mis à niveau. Le paramètre Package-Blacklist contient des expressions régulières. Si le nom du paquet correspond, il est exclu de la mise à niveau automatique.

Je n’ai pas utilisé cette fonctionnalité, je pense qu’elle peut être plus utile si vous exécutez une version de développement où il est logique d’empêcher la mise à niveau automatique de paquets critiques. Le fichier de configuration 50unattended-upgrades fournit des exemples de paquets sur liste noire.

Le README parle du paramètre Package-Whitelist. La description dit “Seuls les paquets qui correspondent aux expressions régulières de cette liste seront marqués pour mise à niveau.” Il n’offre pas d’exemples pour clarifier dans quels cas il serait souhaitable de définir la liste blanche. D’après mes expériences, il semble que l’ajout de paquets à la liste blanche signifie que seuls ces paquets sont mis à niveau automatiquement, rien d’autre.

Conclusion

Maintenant, vous savez ce que unattended-upgrades peut faire et comment le faire faire ce que vous voulez.

Il y a des cas où unattended-upgrades ne fait pas la mise à niveau parce que la commande apt upgrade garde un paquet en arrière. Cela se produit lorsque la mise à niveau supprimerait un paquet ou installerait un paquet précédemment non installé. Pour que la mise à niveau se produise, faites-le vous-même avec la commande apt full-upgrade qui peut supprimer des paquets ou installer de nouveaux paquets précédemment non installés. Si les mises à jour non surveillées sont configurées pour envoyer des e-mails, l’e-mail contient la ligne

Paquets avec origine mise à niveau mais gardés en arrière :

Un dernier exemple de 52unattended-upgrades-local d’un de mes hôtes :

Unattended-Upgrade::Origins-Pattern {
// Taleman ajouté 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";
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.