web-dev-qa-db-fra.com

Les mises à niveau sans surveillance ne trouvent rien quand courir manuellement

Quand courir manuellement, Sudo unattended-upgrade ne trouve rien à mettre à niveau:

No packages found that can be upgraded unattended and no pending auto-removals

Mais faire Sudo apt update Auparavant change miraculeusement la situation:

Packages that will be upgraded: ...
...
All upgrades installed

La configuration dans /etc/apt/apt.conf.d/20auto-upgrades contient APT::Periodic::Update-Package-Lists "1"; comme ça devrait faire. Ceci est probablement utilisé uniquement par cron, qui pourrait expliquer la liste des packages obsolètes.

En outre, le mec de unattended-upgrade dit:

Ce script est le backend pour l'option APT :: périodique :: Option de mise à niveau sans surveillance et conçue pour être exécutée à partir de cron (par exemple via /etc/cron.daily/apt)

Est unattended-upgrades est entièrement dépendant de cron, et si cela signifie-t-il que cela ne devrait pas être exécuté à partir d'un script?

Edit: TLDR. Running unattended-upgrades extérieur cron, dans une coquille, ne mène rien, même si la configure a l'air correcte. Apparemment, c'est parce qu'un travail distinct cron est responsable de la mise à jour de la liste des packages. Ce comportement est-il correct?

1
Sqerstet

La réponse semble être qu'un succès unattended-upgrade dépend effectivement une mise à jour récente des listes de packages (équivalent à apt update). Il repose sur cet être fait soit par cron (chèque /etc/cron.daily/, /etc/cron.d/) ou plus probablement un systemd minuterie (do Sudo systemctl list-timers).

Ce paquet sera non lui-même déclencher la mise à jour, ni vérifier que les listes de packages sont à jour. S'ils ne le sont pas, il va simplement écrire sur son journal qu'il n'y a rien à installer.

1
Sqerstet

partiellement correct

Les mises à niveau sans surveillance de 16,04 ans et plus ont fallu sur le cron pour déclencher le service combiné de mise à jour/mise à niveau.

Cependant, cela a changé: 18.04 utilise des minuteries SystemD au lieu de cron. Les minuteries de mise à jour et de mise à niveau sont indépendantes et peuvent courir de nombreuses heures d'intervalle. C'est la cause la plus probable (et la plus attendue) des packages apparaissant miraculeusement - ils étaient probablement téléchargés/miroirs après la mise à jour précédente.

Vous pouvez exécuter le unattended-upgrades commande de l'invite d'une coquille, et elle fera exactement le même travail que si vous êtes déclenché par Cron (16,04 ans et plus) ou SystemD Timer (18.04 et plus récent).

Comme il est contrôlé par SystemD, vous pouvez utiliser n'importe quel déclencheur que vous souhaitez démarrer la mise à jour quotidienne et la mise à niveau - vous n'êtes pas limité à l'utilisation des minuteries intégrées. Vous pouvez, par exemple, commencez-les 4 minutes après la mise en réseau, ou définissez les minuteries à exécuter à une heure standard pendant le déjeuner, ou tout ce que vous voulez satisfaire à vos besoins.

1
user535733