Our package management sucks for the desktop user. Out of the box, we install X different package managers, all of which seem to implement their own subtly different methods for automatic dependency tracking, handling the Recommends field, and determining what is installed and remove on a dist-upgrade operation.
Why do we have seven programs that all do the same thing, but in different ways, with different user interfaces and using different technical terms for the same things (e.g., Channel/Source/Repository for 'a line in sources.list).
Command-line tools
These aren't so important because only an expert user will use them. But it's annoying that they use different databases to store information for their automatic dependency tracking.
- apt-get
- aptitude
Graphical tools
The most obvious entry point is the icon that appears in the notification area; this is provided by update-notifier. This appears whenever updates are available. How does it determine this? By running /usr/lib/update-notifier/apt-check which appears to implement the same logic as running apt-get upgrade. When there are upgradeable packages available, the icon appears.
Clicking on this icon launches a second package manager, update-manager. This performs the equivalent of apt-get upgrade. Already we have a problem: the list of packages offered here is different to that calculated by update-notifier. This is 492863.
If instead we right-click on the icon, we get a menu:
Show Updates: launches update-manager
Install all updates: launches synaptic in dist-upgrade mode
Check for updates: launches synaptic in update mode
Start package manager: launches synaptic in interactive mode
Preferences: launches software-properties-gtk from the software-properties package
Examining GNOME's System → Administration menu, we find several options:
Add/Remove Applications, which launches gnome-app-install
Software Sources, which launches software-properties-gtk from software-properties
synaptic package manager
In the ideal world there would be just PackageKit and the appropriate front-end.