3

Just wondering how I do the above. This is what my /etc/apt/apt.conf.d/50unattended-upgrades currently looks like:

// Automatically upgrade packages from these (origin:archive) pairs
//
// Note that in Ubuntu security updates may pull in new dependencies
// from non-security sources (e.g. chromium). By allowing the release
// pocket these get automatically pulled in.
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    // Extended Security Maintenance; doesn't necessarily exist for
    // every release and this system may not have it installed, but if
    // available, the policy for updates is such that unattended-upgrades
    // should also install from here by default.
//  "${distro_id}ESM:${distro_codename}";
    "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

// Python regular expressions, matching packages to exclude from upgrading
Unattended-Upgrade::Package-Blacklist {
    // The following matches all packages starting with linux-
//  "linux-";

    // Use $ to explicitely define the end of a package name. Without
    // the $, "libc6" would match all of them.
//  "libc6$";
//  "libc6-dev$";
//  "libc6-i686$";

    // Special characters need escaping
//  "libstdc\+\+6$";

    // The following matches packages like xen-system-amd64, xen-utils-4.1,
    // xenstore-utils and libxenstore3.0
//  "(lib)?xen(store)?";

    // For more information about Python regular expressions, see
    // https://docs.python.org/3/howto/regex.html
};

// This option controls whether the development release of Ubuntu will be
// upgraded automatically. Valid values are "true", "false", and "auto".
Unattended-Upgrade::DevRelease "auto";

// 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 "true";

// Split the upgrade into the smallest possible chunks so that
// they can be interrupted with SIGTERM. 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 updates when the machine is shutting down
// instead of doing it in the background while the machine is running.
// This will (obviously) make shutdown slower.
// Unattended-upgrades increases logind's InhibitDelayMaxSec to 30s.
// This allows more time for unattended-upgrades to shut down gracefully
// or even install a few packages in InstallOnShutdown mode, but is still a
// big step back from the 30 minutes allowed for InstallOnShutdown previously.
// Users enabling InstallOnShutdown mode are advised to increase
// InhibitDelayMaxSec even further, possibly to 30 minutes.
//Unattended-Upgrade::InstallOnShutdown "false";

// 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 "redacted";

// 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";

// Remove unused automatically installed kernel-related packages
// (kernel images, kernel headers and kernel version locked tools).
  Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// Do automatic removal of newly unused dependencies after the upgrade
  Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
  Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Automatically reboot *WITHOUT CONFIRMATION* if
//  the file /var/run/reboot-required is found after the upgrade
  Unattended-Upgrade::Automatic-Reboot "true";

// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
  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 "true";

// Specify syslog facility. Default is daemon
// Unattended-Upgrade::SyslogFacility "daemon";

// Download and install upgrades only on AC power
// (i.e. skip or gracefully stop updates on battery)
   Unattended-Upgrade::OnlyOnACPower "true";

// Download and install upgrades only on non-metered connection
// (i.e. skip or gracefully stop updates on a metered connection)
   Unattended-Upgrade::Skip-Updates-On-Metered-Connections "true";

// Verbose logging
   Unattended-Upgrade::Verbose "true";

// Print debugging information both in unattended-upgrades and
// in unattended-upgrade-shutdown
   Unattended-Upgrade::Debug "true";

EDIT: I have far too many sources to list them all here, but an example of one line from them is:

deb [arch=amd64] http://repository.veeam.com/backup/linux/agent/dpkg/debian/public stable veeam

Would simply adding that string to the Unattended-Upgrade::Allowed-Origins list enable unattended upgrades for that package?

jdrch
  • 110
  • 1
  • 11
  • There is no global way to upgrade everything using Unattended Upgrades - you must add each repository to /etc/apt/apt.conf.d/50unattended-upgrades. If you edit your question to include your sources, we can offer more detailed advice. – user535733 May 26 '19 at 03:10
  • Edited with an example sources entry and a matching question. TIA! – jdrch May 27 '19 at 19:50
  • Did you ever get a proper answer to how to exactly do this? – cueedee Feb 20 '20 at 14:17

1 Answers1

3

Btw, a much more thorough discussion on the subject is given in this answer


From https://github.com/mvo5/unattended-upgrades/blob/master/README.md#setup :

Allowed-Origins is a simple list of patterns of the form "<origin>:<archive>";.

... and exactly what to substitute for <origin> and <archive> could be deduced from the respective o=... and a=... output of:

sudo apt-cache policy | grep 'o=[^,]*.a=[^,]*'

eg.

release           o=jenkins.io ,a=binary           ,c=
release           o=Docker     ,a=xenial           ,l=Docker CE,c=stable,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial-security  ,n=xenial,l=Ubuntu,c=universe,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial-security  ,n=xenial,l=Ubuntu,c=main,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial-updates   ,n=xenial,l=Ubuntu,c=universe,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial-updates   ,n=xenial,l=Ubuntu,c=main,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial           ,n=xenial,l=Ubuntu,c=universe,b=amd64
release v=16.04,  o=Ubuntu     ,a=xenial           ,n=xenial,l=Ubuntu,c=main,b=amd64

(whitespace added to simulate grep's output highlighting)


The takeaway from this is that if you would add "*:*"; into the Unattended-Upgrade::Allowed-Origins { ... } list, then all (subject to their priority) sources listed by sudo apt-cache policy will be subjected to unattended upgrading.

cueedee
  • 338
  • Thanks for finding that! I finally got around to editing my /etc/apt/apt.conf.d/51unattended-upgrades based on what you said. Hopefully it works! – jdrch Mar 13 '20 at 04:40
  • 1
    @jdrch, is that a typo or did you deliberately create a 51unattended-upgrades in order to, as I suspect, override the defaults from 50unattended-upgrades? – cueedee Mar 16 '20 at 21:30
  • 1
    It's deliberate. IIRC from the documentation unattended-upgrades reads config files in ascending numerical order, and only applies the config of the highest number. Ergo, it's recommended to leave the default files as is, copy them to new files, edit the new files and increment the numerical prefix to something higher than the default's. This is especially the case as regenerating the original defaults if you make a bad edit requires an annoying # apt purge and reinstallation. Learned that the hard way ;) – jdrch Mar 18 '20 at 18:46
  • 2
    BTW, I should add that the solution works. Running # unattended-upgrade --debug --dry-run afterward doesn't produce any errors from what I saw. – jdrch Mar 18 '20 at 18:50