Updating all the software on your system can be a pain, but with Linux it doesn't have to be that way. We'll show you how to combine the apt package management system with a task scheduler to automatically update your system.
If you've been using Linux for even a short time you'll surely have experienced the wonders of having a package management system at your disposal. For Debian and Ubuntu users the package manager you get is the excellent
apt-get makes installing a new program (e.g.
xclock, a graphical clock) as simple as:
% apt-get install xclock
That's nice, but the real reason
apt is so useful is that updating your entire system all at once is just as easy:
% apt-get update ... % apt-get upgrade ...
This will refresh the
apt system with the newest information about packages and then download and install any packages that have newer versions. Do it regularly and you can be sure that you've got the latest and most secure software on your machine, without needing to hunt down the newest edition of each program individually.
You can make things even easier, however, by combining the
apt system with the Linux scheduling daemon
cron let's you schedule any command to run periodically at given intervals. Take the following command:
% (apt-get update && apt-get -y upgrade) > /dev/null
Which both updates the apt cache and upgrades the system. The
-y flag tells
apt-get to answer yes to every question, which prevents the process from hanging waiting for user input, say in the middle of the night so the bandwidth from the downloads won't bother anyone. It's also a good idea to redirect the output of the command to
/dev/null, so that your terminal is not flooded with the results of automatic maintenance.
It's a bad idea to just install everything regardless of errors, sometimes incompatible software can creep into the repository, and that can bring down your whole system. A better idea if you want to be more careful with what your machine is doing is to add the
-d flag, which tells
apt to merely download the packages, but not install them. You can then run
apt-get dist-upgrade later to install the packages without waiting for them to download, and letting you keep a watchful eye over what's being installed without having to wait for everything to download.
If you want to use this approach then you can add the following lines to your crontab using
crontab -e, which will download new packages every Sunday morning at 12am:
# Automatic package upgrades 0 0 * * 0 root (apt-get update && apt-get -y -d upgrade) > /dev/null
There is still an easier way — using the
cron-apt package, which as the name might suggest, combines the cron and apt utilities, but provides a bit more flexibility and a simpler interface — as well as supporting e-mail alerts on errors or new information.
cron-apt automatically adds the
-d flag, so you'll have to run
apt-get dist-upgrade to install the changes. You can install
cron-apt like any other common utility by using apt:
% apt-get install cron-apt
The configuration for
cron-apt reside in
/etc/cron-apt/config — except how often the script runs, that's depended on
cron so you can find it in
/etc/cron.d/cron-apt. One popular configuration change is to add the line:
This will make sure an e-mail is always sent when the update runs, rather than only when an error occurs.
That's it. Setting up your machine to automatically update itself is as simple as a couple of lines in the console. If you need to have closer control over what is happening during the automatic update process then you'll want to write your own script, the Ubuntu help pages have a good run down of how to write a script around aptitude to achieve the same results.