I am running Debian 9 Stretch.
I have the following package installed.
unattended-upgrades/stable,now 0.93.1+nmu1 all [installed]
My 20auto-upgrades
file looks like :
# cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
My 50unattended-upgrades
looks like :
# cat /etc/apt/apt.conf.d/50unattended-upgrades
// Unattended-Upgrade::Origins-Pattern controls which packages are
// upgraded.
//
// Lines below have the format format is "keyword=value,...". A
// package will be upgraded only if the values in its metadata match
// all the supplied keywords in a line. (In other words, omitted
// keywords are wild cards.) The keywords originate from the Release
// file, but several aliases are accepted. The accepted keywords are:
// a,archive,suite (eg, "stable")
// c,component (eg, "main", "contrib", "non-free")
// l,label (eg, "Debian", "Debian-Security")
// o,origin (eg, "Debian", "Unofficial Multimedia Packages")
// n,codename (eg, "jessie", "jessie-updates")
// site (eg, "http.debian.net")
// The available values on the system are printed by the command
// "apt-cache policy", and can be debugged by running
// "unattended-upgrades -d" and looking at the log file.
//
// Within lines unattended-upgrades allows 2 macros whose values are
// derived from /etc/debian_version:
// ${distro_id} Installed origin.
// ${distro_codename} Installed codename (eg, "jessie")
Unattended-Upgrade::Origins-Pattern {
// Codename based matching:
// This will follow the migration of a release through different
// archives (e.g. from testing to stable and later oldstable).
// "o=Debian,n=jessie";
// "o=Debian,n=jessie-updates";
// "o=Debian,n=jessie-proposed-updates";
// "o=Debian,n=jessie,l=Debian-Security";
// Archive or Suite based matching:
// Note that this will silently match a different release after
// migration to the specified archive (e.g. testing becomes the
// new stable).
// "o=Debian,a=stable";
"o=Debian,a=stable-updates";
"o=Debian,a=proposed-updates";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
};
// List of packages to not update (regexp are supported)
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
// This option allows you to control if on a unclean dpkg exit
// unattended-upgrades will automatically run
// dpkg --force-confold --configure -a
// The default is true, to ensure updates keep getting installed
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";
// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGUSR1. This makes the upgrade
// a bit slower but it has the benefit that shutdown while a upgrade
// is running is possible (with a small delay)
//Unattended-Upgrade::MinimalSteps "true";
// Install all unattended-upgrades when the machine is shuting down
// instead of doing it in the background while the machine is running
// This will (obviously) make shutdown slower
//Unattended-Upgrade::InstallOnShutdown "true";
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. A package that provides
// 'mailx' must be installed. E.g. "user@example.com"
Unattended-Upgrade::Mail "root";
// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set
//Unattended-Upgrade::MailOnlyOnError "true";
// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
// Automatically reboot even if there are users currently logged in.
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";
// Enable logging to syslog. Default is False
// Unattended-Upgrade::SyslogEnable "false";
// Specify syslog facility. Default is daemon
// Unattended-Upgrade::SyslogFacility "daemon";
At this point in time, if I run apt update
, I can see that :
# apt update
<skipping-output>
Reading package lists... Done
Building dependency tree
Reading state information... Done
52 packages can be upgraded. Run 'apt list --upgradable' to see them.
Now by default, I have /lib/systemd/system/apt-daily.timer
and /lib/systemd/system/apt-daily-upgrade.timer
They have been left to default
# cat /lib/systemd/system/apt-daily.timer
[Unit]
Description=Daily apt download activities
[Timer]
OnCalendar=*-*-* 6,18:00
RandomizedDelaySec=12h
Persistent=true
[Install]
WantedBy=timers.target
and
# cat /lib/systemd/system/apt-daily-upgrade.timer
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
But I want to override these values. So Ive created the following file :
# cat /etc/systemd/system/apt-daily.timer.d/override.conf
[Timer]
OnCalendar=
OnCalendar=17:23
and
# cat /etc/systemd/system/apt-daily-upgrade.d/override.conf
[Timer]
OnCalendar=
OnCalendar=17:24
And then I restarted 2 services.
systemctl restart apt-daily unattended-upgrades.service
But the aunattended upgrade is not running. The log directory seems to be empty :
# ls -tlrh /var/log/unattended-upgrades
total 0
-rw-r--r-- 1 root root 0 Dec 22 2017 unattended-upgrades-shutdown.log
Any ideas what I might have missed here . ?
EDIT
Running the command journalctl --since yesterday -u apt-daily.service
yields :
Jan 23 00:48:47 host systemd[1]: Starting Daily apt download activities...
Jan 23 00:48:47 host apt.systemd.daily[5315]: verbose level 2
Jan 23 00:48:48 host apt.systemd.daily[5315]: Reading package lists...
Jan 23 00:48:48 host apt.systemd.daily[5315]: Building dependency tree...
Jan 23 00:48:48 host apt.systemd.daily[5315]: Reading state information...
Jan 23 00:48:48 host apt.systemd.daily[5315]: check_stamp: interval=86400, now=1548201600, stamp=1548115200, delta=86400 (sec)
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:1 https://my-repo/debian jessie-backports InRelease [166 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Ign:2 https://my-repo/debian jessie InRelease
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:3 https://my-repo/debian jessie-updates InRelease [145 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:4 https://my-repo/debian jessie-proposed-updates InRelease [139 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:5 https://my-repo/debian-security jessie/updates InRelease [44.9 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Hit:6 https://my-repo/sapmachine/amd64 ./ InRelease
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:7 https://my-repo/debian stretch-backports InRelease [91.8 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Ign:8 https://my-repo/debian stretch InRelease
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:9 https://my-repo/debian stretch-updates InRelease [91.0 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:10 https://my-repo/debian stretch-proposed-updates InRelease [96.3 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Get:11 https://my-repo/debian-security stretch/updates InRelease [94.3 kB]
Jan 23 00:48:48 host apt.systemd.daily[5315]: Hit:12 https://my-repo/debian jessie Release
Jan 23 00:48:48 host apt.systemd.daily[5315]: Hit:13 https://my-repo/debian stretch Release
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:14 https://my-repo/debian-security jessie/updates/main amd64 Packages [636 kB]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:15 https://my-repo/debian-security jessie/updates/main Translation-en [320 kB]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:16 https://my-repo/debian stretch-proposed-updates/main amd64 Packages.diff/Index [27.8 kB]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:17 https://my-repo/debian stretch-proposed-updates/main Translation-en.diff/Index [27.8 kB]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:18 https://my-repo/debian stretch-proposed-updates/main amd64 Packages 2019-01-22-2008.10.pdiff [2,401 B]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:18 https://my-repo/debian stretch-proposed-updates/main amd64 Packages 2019-01-22-2008.10.pdiff [2,401 B]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:19 https://my-repo/debian stretch-proposed-updates/main Translation-en 2019-01-22-2008.10.pdiff [1,674 B]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Get:19 https://my-repo/debian stretch-proposed-updates/main Translation-en 2019-01-22-2008.10.pdiff [1,674 B]
Jan 23 00:48:49 host apt.systemd.daily[5315]: Fetched 1,885 kB in 1s (1,283 kB/s)
Jan 23 00:48:51 host apt.systemd.daily[5315]: Reading package lists...
Jan 23 00:48:51 host apt.systemd.daily[5315]: download updated metadata (success).
Jan 23 00:48:51 host apt.systemd.daily[5315]: send dbus signal (success)
Jan 23 00:48:51 host apt.systemd.daily[5315]: check_stamp: interval=0
Jan 23 00:48:51 host apt.systemd.daily[5315]: download upgradable (not run)
Jan 23 00:48:52 host apt.systemd.daily[5315]: unattended-upgrade -d (not run)
Jan 23 00:48:52 host systemd[1]: Started Daily apt download activities.
Best Answer
The mistake is in this line:
cat /etc/systemd/system/apt-daily-upgrade.d/override.conf
You probably copied it from the official debian documentation on https://wiki.debian.org/UnattendedUpgrades which currently has a mistake in it that is misleading a lot of people. It claims that you can override the upgrade time by creating a file called
However the correct path is
Once you add this do the following commands to make sure that it worked:
to make it familiar with the newly create file
to apply the override.conf
to show you that the right time is scheduled for the next timer event)
If you also edited the download time:
I notified wiki@debian.org as I am not an editor there yet, either they will fix it or I will if they grant me access.