In Ubuntu, the most convenient way to get a system up to date is to call apt-get update followed by apt-get upgrade. However, on a system that is part of a production environment, it is common practice to test the updates first on an offline system and then apply the very same updates that have been tested on the production system. I wonder if this is possible with apt-get upgrade - is there a way to specify the upgrade in more detail, e.g. by specifying a date until when the upgrade is to be performed?
Once you have tested the upgrades, you can manually upgrade only those specific packages you have tested on the production server with:
apt-get install somepackage=someversion
If you want to specify a date when the upgrade is to be performed, you should cron it.
If you're going to do a wholesale upgrade, then put this in your crontab with the desired date:
/usr/sbin/apt-get update --yes
If you want to only do specific updates, then I suggest using the format from @psusi above and put each package into the list again with the --yes flag.
The --yes flag simply answers yes to any questions that come up so the install won't hang waiting for someone to press a key. Of course, auto-yessing your upgrades is only sane once you've fully tested them on dev.
This is only a start, but you can at least see what is about to be changed...
apt-get --simulate upgrade
So on the dev/qa system you run that and save the output; it has the full package names and their versions. Then do your actual upgrade. Then on the production systems you can use the --simulate. You'd then at least know if the upgrade will be the same as you did on the dev/qa.
You're still stuck having to manually do the upgrade package by package, if by the time you get around to doing a prod machine, there's actually something newer.