Si y a bien un truc qui me casse les couilles sur mes machines GNU/Linux type Debian ou Ubuntu, c'est de les maintenir toujours à jour. C'est possible de faire en sorte que notre distro effectue toute seule ses MAJ grâce à l'outil unattended-upgraded.

Y'en a qui diront...

Enfin bref! On ne vas pas débattre là dessus, chacun son avis.

On va commencer...

Pour commencer, on va installer le package unattended-upgrades:

sudo apt update; sudo apt install -y unattended-upgrades

Une fois que c'est fait, on va attaquer la conf! Miam!

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

Alors ce fichier est consitué de différents blocks de configuration. Nous allons tout d'abord nous intéresser au block "Unattended-Upgrade::Allowed-Origins" qui correspond aux sources récupérables (dépôts).

Vous pouvez dé-commenter la ligne suivante (en supprimant les  //), attention, si vous souhaitez garder vos versions actuelles de vos paquets, ce n'est pas à faire.

"${distro_id}:${distro_codename}-updates";

Bien sûr vous pouvez l'activer mais spécifier dans la section "Unattended-Upgrade::Package-Blacklist" les paquets que vous ne souhaitez pas mettre à jour (exemple linux-; pour le kernel).

Par défaut les lignes suivantes doivent être actives:

"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";

Elles vous permettront d'au moins pouvoir récupérer les mises à jours de sécurité. Je vous déconseille très fortement de les retirer.

Et si je veux recevoir un mail quand ça ne va pas ?

Ne vous inquiétez pas, ce bel outil inclut déjà cette possibilité. Il vous est possible d'envoyer un e-mail via la configuration suivante:

Unattended-Upgrade::Mail "mon@email.com";
Unattended-Upgrade::MailReport "only-on-error";

Je parlais un peu plus haut, qu'il était possible de "bypasser" certains paquet en donnant l'exemple du kernel.

L'outil prend en charge la suppression automatique des anciens kernels. Vous pouvez le faire, idéalement, on peut garder l'avant dernier, malheureusement l'outil ne permet pas de le spécifier.

Si vous souhaitez supprimer les vieux kernels, perso je le déconseille fortement:

Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

Par contre, il peut être intéressant de supprimer automatiquement les dépendances inutiles (un peu de ménage ça ne fait jamais de mal):

Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

Vous pouvez programmer un redémarrage automatique en appliquant les lignes suivantes (c'est pareil, ça reste risqué, à éviter donc en production ou alors que dans certains cas...).

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

Plus qu'à activer tout ça !

On ne va pas se le cacher, comme jusque là, ça reste pas très complexe.

On va ainsi modifier la configuration:

sudo vi /etc/apt/apt.conf.d/20auto-upgrades

# La configuration à y ajouter:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";

Maintenant, vous pouvez tester la configuration avec la commande:

sudo unattended-upgrades --dry-run --debug

Les journaux sont présents dans  /var/log/unattended-upgrade/.

Et voilà, tout est bon!