Silent unatended apt-get upgrade

30-03-2013 | Remy van Elst

Table of Contents

This tutorial will show you how to setup completely silent apt-get upgrade via cron. It also defaults to not overwriting config files if a package has a newer version.

Important! You should watch out with this. Upgrades can break things. Use this on your own risk.

apt-get can be ran from a cronjob with different options to let it update everything without asking questions. However, the regular combination as seen below still mails output (and thus, not upgrades) when a changed file is found in a package, for example, the /etc/lighttpd/lighttpd.conf file.

This is example output of such a situation:

apt-get upgrade -y --force-yes -qq

Configuration file `/etc/lighttpd/lighttpd.conf'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : background this process to examine the situation
The default action is to keep your current version.
*** lighttpd.conf (Y/I/N/O/D/Z) [default=N] ? 

The apt-get command is ran from cron, and the below lines are mailed.

The solution

Using a few options for DPKG results in this command:

DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade

Results in this cronjob:

1 1 * * * DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical sudo apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" dist-upgrade

And if you also want to update the apt-cache:

1 3 * * * DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical sudo apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" dist-upgrade
1 1 * * * apt-get -y update

Tags: apt, apt-get, aptitude, automatic, dpkg, synaptic, update, upgrade,