How to configure Automatic Updates On Debian Wheezy

Version 1.0
Authors: Falko Timme, Srijan Kishore
Last edited: 07/Jul/2014

This tutorial shows how to configure a Debian Wheezy system to have package updates installed automatically without user interaction. In addition to that I will show you what needs to be done to have the system email you about available updates on a daily basis.

1 Configure The System For Unattended Upgrades

To make the system install upgrades automatically, we need to install the package unattended-upgrades. It is also good to have the /usr/bin/mail command on the system in case you want to configure the unattended-upgrades package to send email notifications, therefore we install the package bsd-mailx as well:

apt-get install unattended-upgrades bsd-mailx

You can configure the unattended-upgrades package by modifying the file /etc/apt/apt.conf.d/50unattended-upgrades:

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

Normally the default configuration should be ok; if you want to change anything, please read the comments in the file which make the configuration self-explaining. For example, you can specify the upgrade origins (default: stable and security), you can blacklist packages that should not be updated, you can have the system email you if there are problems, you can have the system remove unused dependencies after an update, or you can make the system do an automatic reboot if this is needed after an update. Please note: The double slashes // serve as a comment; anything that follows a comment in the same line will not be evaluated.

// Automatically upgrade packages from these origin patterns
Unattended-Upgrade::Origins-Pattern {
        // 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";

// List of packages to not update
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. "[email protected]" //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 a // the file /var/run/reboot-required is found after the upgrade //Unattended-Upgrade::Automatic-Reboot "false"; // Use apt bandwidth limit feature, this example limits the download // speed to 70kb/sec //Acquire::http::Dl-Limit "70";

Next create the file /etc/apt/apt.conf.d/02periodic to enable unattended upgrades (again, the file is self-explaining because of the comments):

vi /etc/apt/apt.conf.d/02periodic

// Enable the update/upgrade script (0=disable)
APT::Periodic::Enable "1";

// Do "apt-get update" automatically every n-days (0=disable)
APT::Periodic::Update-Package-Lists "1";

// Do "apt-get upgrade --download-only" every n-days (0=disable)
APT::Periodic::Download-Upgradeable-Packages "1";

// Run the "unattended-upgrade" security upgrade script
// every n-days (0=disabled)
// Requires the package "unattended-upgrades" and will write
// a log in /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";

// Do "apt-get autoclean" every n-days (0=disable)
APT::Periodic::AutocleanInterval "7";

That's it! Unattended upgrades will be run once per day from the cron job script /etc/cron.daily/apt

The script will log to the file /var/log/unattended-upgrades/unattended-upgrades.log The log file could have entries similar to these after a successful upgrade:

2014-07-07 17:49:30,878 INFO Initial blacklisted packages:
2014-07-07 17:49:30,880 INFO Starting unattended upgrades script
2014-07-07 17:49:30,880 INFO Allowed origins are: ["('Debian', 'stable')", "('Debian', 'wheezy-security')"]
2014-07-07 17:50:05,222 INFO Packages that are upgraded: apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin
  apache2.2-common apt apt-utils base-files dpkg dselect file gnupg gpgv
  libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libc6:i386 libcurl3:i386
  libdbus-1-3 libdbus-1-3:i386 libgnutls26 libgnutls26:i386 libjbig0:i386
  libmagic1 libnspr4:i386 libnspr4-0d:i386 libsnmp-base libsnmp15 libssl1.0.0
  libssl1.0.0:i386 libwbclient0 libxml2 libxml2:i386 locales locales-all
  multiarch-support openssh-client openssh-server openssl samba samba-common
  snmp tzdata wget whois

2014-07-07 17:50:05,225 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2014-07-07_17:50:05.224836.log'
2014-07-07 17:51:51,290 INFO All upgrades installed

2 Make The System Send Notifications About Available Updates

There's another useful package called apticron which can email notifications about packages that have updates available, together with a list of changes in each update package.

To install apticron, simply run:

apt-get install apticron

To configure apticron, please edit /etc/apticron/apticron.conf:

vi /etc/apticron/apticron.conf

All that needs to be changed is the EMAIL directive - please specify one or more email addresses (separated by a space) to be notified about available updates:

# set EMAIL to a space separated list of addresses which will be notified of
# impending updates
EMAIL="[email protected] [email protected]"

Apart from that, the default configuration should suit most cases.


Share this page:

2 Comment(s)

Add comment


From: Anonymous

To create /etc/apt/apt.conf.d/02periodic you can also run:

sudo dpkg-reconfigure -plow unattended-upgrades


From: smoneck

Meanwhile (Debian went to systemd) it seems to be /usr/lib/apt/apt.systemd.daily instead of /etc/cron.daily/apt.

As well: According to apt.systemd.daily, 02periodic changed to 10periodic.