System Upgrade Tool
Created: 2005-04-23 by MattZimmerman
UduSessions: 1, 4, 8, etc
Provide a smooth, integrated facility for upgrades between successive Ubuntu releases.
Users want upgrades to be a happy occasion on which they get a newer, better OS, not a time for gnashing of teeth and worrying about preservation of data and functionality.
Scope and Use Cases
- Provide a one-step facility for system upgrades
- High-level selections (like metapackages) should play a more central role in system upgrades: they are a more accurate reflection of the user's preferences than apt's heuristics
Handle packaging transitions (e.g., esound->polypaudio->esound)
- Removal of obsolete packages
- Review third party / unsupported packages
- Martha is running the Hoary Distribution and wants to always run the latest stable distribution. When a new distribution release is available she wants to be notified about it, as well as upgrading her system without too much hassle and questions.
- The user Brad wants to upgrade his distribution as seldom as possible. He still wants to always run a supported distribution to get security and other critical fixes. When the support for his distribution runs out he wants to be notified. He also wants to upgrade then to the latest distribution.
Extend update-manager so that it contains support for distribution upgrades. The current version will check http://changelogs.ubuntu.com/meta-release and check if a new version is available and if the running distro is still supported. The update-manager will have support to update the sources.list file, update the package list with the new sources.list and perform an 'apt dist-upgrade'.
It needs to make sure that meta-packages are not removed during the system upgrade. Various options need to be evaluated:
- using the "Protect" feature of the apt internal problem resolver to protect the meta-packages
- using the Pin feature of apt to make sure that the new distro gets a higher priority than other sources (like 3rd party repositories). If the user has already used pinning we may consider warning him about it and not using our own pins because it may confuse apt and cause more damage than good.
In general, a dist-upgrade will affect most installed applications and a reboot is usually required because the kernel changes between releases. This may lead to breakage of running programs during the install of the upgrades (e.g. Firefox and its xul files are updated). We need to tell the user to close applications before the upgrade.
Update-manager needs to be careful about mirrors in the sources list and honor them to avoid too much load to the main Ubuntu archive server.
Update-manager needs to be refactored so that it separates more cleanly between frontend and backend. This is needed to make it easy for the Kubuntu team to write its own GUI.
Optional and no longer needed packages should be identified by porting the aptitude automark feature into apt. This means that packages that are installed as dependencies are marked as "automatically installed" and will be removed when all packages that need them as dependency are removed (PackageDependencyManagement).
It may be useful to display all third-party/non-Ubuntu packages before an upgrade to warn the user that they may break.
There are no implementation plans for special handling of transitions (like esound->polyaudio->esound) yet, but old and unsupported packages should be displayed (with a option to simply remove them?).
It's probably useful to display the ReleaseNotes as well.
Data Preservation and Migration
In general a system upgrade will update a lot of packages. It's the job of the individual packages to ensure a smooth upgrade and data preservation.
Update-manager needs to be extended to support the system upgrade feature.
User Interface Requirements
Update-manager is written with pygtk and python-apt.
So far it is only detected that a new version is available. No additional steps are performed yet.
UDU BOF Agenda
- update-manager or a separate tool?
- Ensure that metapackage selections are invariant during upgrade
- Teach apt to consider metapackages very important?
- Part of upgrade tool itself?
- removal of obsolete packages (i.e. old libs, python2.3*)