PackageManagement gives the SystemAdministrator (whether that be an administrator of a large network of machines, or Joe Schmoe at his single-user Linux desktop) rapid, easy control over which Packages are installed. The Package format and corresponding PackageManagementTool used is one of the major points of difference between LinuxDistributions. In general, PackageManagement has to perform at least the following tasks:

  • install Packages,
  • maintain a database of already installed ones,
  • upgrading them,
  • and uninstalling Packages.

It is nowadays commonly considered a requirement for PackageManagement to also address dependencies - which means it should make sure to at least notify the SystemAdministrator when they're trying to install a Package that won't work because it depends on other software not currently installed. For example, some GUI application may require GTK and/or GNOME libraries to run. These are of course also provided as Packages. Those may again depend on other packages, which may in turn have their own dependecies - and so on.

As you can imagine, installing any not entirely trivial package can take ages and turn out to be a very frustrating job. Therefor, most contemporary PackageManagementTools were designed to ease the laborous task of meeting all the dependencies of a particular package by resolving them automatically. Binary based distributions usually rely on front-ends such as APT built on top of their original more simple-minded PackageManagementTools, while source based distributions tend to have intelligent dependency management by default. To be able to automatically resolve dependencies, such PackageManagementTools use an external repository (or several ones) of Packages, usually at least one run by the distributor.