J'essaie de comprendre comment les mises à jour automatiques se produisent via le paquet de mises à jour sans surveillance. Ce qui est décrit ci-dessous est ce que j'ai trouvé sur une nouvelle installation d'Ubuntu 16.04.3.
/etc/cron.daily/apt-compat
a une ligne exec /usr/lib/apt/apt.systemd.daily
à la fin qui exécute le script apt.systemd.daily
.
systemd exécute également /usr/lib/apt/apt.systemd.daily
et utilise une minuterie. La définition du service systemd effectuant la mise à jour se trouve dans /lib/systemd/system/apt-daily.service
. Il appelle le script apt.systemd.daily
avec l'argument update
tandis que la définition du service systemd dans /lib/systemd/system/apt-daily-upgrade.service
appelle le même script avec l'argument install
.
Si j'ai bien compris, /usr/lib/apt/apt.systemd.daily
est le script utilisé par le paquet Unattended-upgrades pour effectuer les mises à niveau automatiques. Ce que j'aimerais savoir, c'est pourquoi cron et systemd l'exécutent-ils?
Les deux travaux sont complémentaires et la relation est décrite dans le travail cron (16.04 et plus récent):
# Systemd systems use a systemd timer unit which is preferable to
# run. We want to randomize the apt update and unattended-upgrade
# runs as much as possible to avoid hitting the mirrors all at the
# same time. The systemd time is better at this than the fixed
# cron.daily time
Sur Ubuntu 16.04 et les systèmes plus récents, la minuterie systemd est le travail important. Il fait tout le gros du travail. La tâche cronjob existante déclenche simplement la minuterie systemd, au cas où elle aurait été arrêtée pour une raison quelconque.
Sur les systèmes Ubuntu 14.04 et antérieurs (non-Systemd), le système fonctionne très différemment: le travail cronjob déclenche une série de mises à jour sans assistance.