During the past few Ubuntu development cycles, we've been flooded with threads asking for assistance related to issues caused by careless usage of the "Partial Upgrade" feature of Update Manager, which hinted to a poor understanding of package management and the way updates happen in the development branch.
In an effort to help with this situation, this document aims to clarify what a "Partial Upgrade" is, and why, in most cases, you'll want to avoid it.
or "I don't really care if I keep messing things up and wasting my and others' time with preventable problems, and you have 30 seconds to convince me to care!"
If you use Update Manager to upgrade your packages, and it offers to do a "Partial Upgrade", do not accept it without thoroughly checking what packages it offers to remove, upgrade and install. If you do, you will most likely end up removing packages that shouldn't be removed, and waste time and effort repairing your testing installation and asking for assistance.
Most "Partial Upgrade" situations occur due to package archive inconsistencies, which will typically be resolved within a few hours. If your package manager is confused, and so are you, simply wait and hold off the updates until things settle down.
or "Hmm, so I shouldn't blindly do "Partial Upgrade"s and dist-upgrade? I didn't know that..."
Due to the fact that uploads to the repositories of the active development branch are asynchronous and uncoordinated, dependencies of certain packages may arrive later than the dependent package. This causes package management tools such as Update Manager, which are mainly meant to be used with stable releases of Ubuntu where the package archive is always consistent, to interpret the situation as requiring a dist-upgrade to install new packages and/or repair packages in a "reqreinst" (requires reinstallation) state. What Update Manager performs when doing a "Partial Upgrade" is a dist-upgrade.
When testing development releases, most of the time, a "Partial Upgrade" is undesired. The situations where it's needed are limited to new packages obsoleting old ones (as in the case of the software-center package replacing software-store) and package removals from the archive.
Do not assume that since you're running a development release, a "Partial Upgrade" is necessarily warranted.
or "I want to be a better tester! I care! Tell me more!"
In its normal operating mode, Update Manager will not offer to remove packages. This is the equivalent of "apt-get upgrade"ing your existing packages. In "Partial Upgrade" mode, it can. Sometimes, the removal is warranted, such as when a package is obsoloted by a new one. Other times, it will not be, and a "Partial Upgrade" can offer to remove important packages due to missing dependencies.
Now, the key question:
"How do I know whether a package is actually meant to be replaced or removed?"
There's more than one way:
- Check the changelog of the package in question. You can do this via "Package > Download Changelog" in Synaptic, or "aptitude changelog package_name", or by going to packages.ubuntu.com and clicking "Ubuntu changelog" for the package you're curious about, or visiting the URL
where package_name is the name of the source package you're curious about. The most recent changelog entry will indicate the reason for the removal or replacement, if there is one.
- Keep an eye on the changes mailing list or RSS feed for the active development release. The current ones are the Oneiric-changes mailing list.
For an example scenario of using the list of recent changes to determine whether a package removal and "Partial Upgrade" is safe, refer to the next post.
- Check the build status information page for Ubuntu on Launchpad to see if those mysterious missing dependencies are coming down the pipes, or there are problems preventing them from being built.
- Do a forum search, or join the #ubuntu+1 channel on irc.freenode.net and ask around to see whether other people are having problems with the same package(s).
- If you're still confused, simply wait and see if things are magically fixed within a few hours. If not, start a new thread or post to an existing one on the same issue to check with others.
A typical interaction with a package manager involves the following three steps:
- You select some packages to be installed / removed / upgraded
- The package manager resolves your intention according to its package management logic, the available software sources, and the priorities you've indicated (as in APT pinning), if any, to a set of actions it has to perform, and outputs a list of those actions
- You check this list, confirm it if you're happy with it, or cancel it and refine your selection until you're happy with it.
If you skip the third step, assuming that simply updating your package information and hitting "Apply" or pressing "Enter" when the prompt comes up will give you the latest changes, and/or that since you're running a development release, any kind of package conflict / removal / replacement, even those that seem to intentionally remove lots of packages, are to be expected, you'll keep breaking your installation unnecessarily. Don't do that. Review that list of changes.
While asking for and providing assistance regarding testing is one of the main functions of this forum, learning the basics of using development releases is a prerequisite for doing useful testing, and if lots of people keep messing up their testing installations due to being unfamiliar with those basics, the forum will get flooded with duplicate threads and quicky become much less useful to everyone.
Please take some time to learn the basics, and if you need help with that, don't hesitate to ask!
With thanks to 23meg