Packages affected: apt, python-apt
Automatic Updates - automatic installation of (security) updates, possible even when current user has no sudo privileges
When ubuntu is used by a user without sudo privileges, he cannot upgrade it with security updates. This can mean a machine will be vulnerable to security risks for a prolonged period of time. Also some people just don't care about updates and other technical stuff. They just don't want to be bothered and have ubuntu to keep itself updated and secure.
One problem with unattended upgrades are packages that ask questions in postinst. Fortunately there are few of them nowdays, but we still have kernel, libc, etc. Another problem is that there may be conffile questions during the upgrade.
We may run dpkg with --force-conf-old. A problem with this is that:
- a security upgrade may be using a new version for a (default) conffile
- a upgrade may need a new conffile format
The packages must be prepared for it (don't ask questions, don't prompt, no new conffile). We will limit ourself to security upgrades for the installed distro (origin: ubuntu-security), if anything is installed/upgraded that does not comes from ubuntu-security we will ignore it.
Write it in python-apt, check what's upgradable and comes from security; verify if it does not a) break/remove anything b) installs stuff outside security; upgrade it. It will be tied into the apt cron-job we have already.
1 import apt 2 cache = apt.Cache() 3 for pkg in cache: 4 if pkg.isUpgradable() and pkg.candidateOrigin == "breezy-security": 5 pkg.markUpgrade() 6 # TODO: Check if something unwanted was marked for upgrade/removal 7 if cache.BrokenCount > 0: 8 # TODO: Undo the last action and try something else. 9 pkg.unmarkUpgrade()