30-03-2013 | Remy van Elst | Text only version of this article
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.
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