Package management system

From Wikipedia, the free encyclopedia
  (Redirected from Package manager)
Jump to: navigation, search
apt-get, a command-line tool installing Mediawiki
aptitude, a command-line tool on Debian
aptitude additionally offers TUI
Synaptic, a popular graphical frontend for package management in Linux Debian derived distros
Apper, a GUI for PackageKit on a RHEL 6 system.
The Ubuntu Software Center is a GUI in PyGTK for dpkg/APT

In software, a package management system, also called package manager, is a collection of software tools to automate the process of installing, upgrading, configuring, and removing software packages for a computer's operating system in a consistent manner. It typically maintains a database of software dependencies and version information to prevent software mismatches and missing prerequisites.


Package management systems are designed to save organizations time and money through remote administration and software distribution technology that eliminate the need for manual installs and updates. This can be particularly useful for large enterprises whose operating systems are based on Linux and other Unix-like systems, typically consisting of hundreds or even thousands of distinct software packages; in the former case, a package management system is a convenience, in the latter case it becomes essential.[1]




A package management system is often called an "install manager". This can lead to confusion between a package management system and an installer. The differences include:

Package management system Installer
Usually part of an operating system. Each product comes bundled with its own installer.
Uses one installation database. Performs its own installation, sometimes recording information about that installation in a registry.
Can verify and manage all packages on the system. Works only with its bundled product.
One package management system vendor. Multiple installer vendors.
One package format. Multiple installation formats.

A package, for package managers, denotes a specific set of files bundled with the appropriate metadata for use by a package manager. This can be confusing, as some programming languages often use the word "package" as a specific form of software library. Furthermore, that software library can be distributed in a package of files bundled for a package manager.

Package managers are analogous to the app store concept from commercial operating systems, except almost all packages are available at no charge and app stores may not perform dependency resolution, as all dependencies are typically bundled with the main executable on these systems.


Illustration of a package management system being used to download new software. Manual actions can include accepting a license agreement or selecting some package-specific configuration options.

Package management systems are charged with the task of organizing all of the packages installed on a system. Typical functions of a package management system include:

  • Verifying file checksums to ensure correct and complete packages;
  • Verifying digital signatures to authenticate the origin of packages;
  • Applying file archivers to manage encapsulated files;
  • Grouping of packages by function to reduce user confusion;

Some additional challenges are met by only a few package management systems.

Challenges with shared libraries[edit]


Front-ends for locally compiled packages[edit]



Maintenance of configuration[edit]

Particularly troublesome with software upgrades are upgrades of configuration files. Since package management systems, at least on Unix systems, originated as extensions of file archiving utilities, they can usually only either overwrite or retain configuration files, rather than applying rules to them. There are exceptions to this that usually apply to kernel configuration (which, if broken, will render the computer unusable after a restart). Problems can be caused if the format of configuration files changes. For instance, if the old configuration file does not explicitly disable new options that should be disabled. Some package management systems, such as Debian's dpkg, allow configuration during installation. In other situations, it is desirable to install packages with the default configuration and then overwrite this configuration, for instance, in headless installations to a large number of computers. This kind of pre-configured installation is also supported by dpkg.



Upgrade suppression[edit]

When a user interacts with the package management software to bring about an upgrade, it is customary to present the user with the list of things to be done (usually the list of packages to be upgraded, and possibly giving the old and new version numbers), and allow the user to either accept the upgrade in bulk, or select individual packages for upgrades. Many package management systems can be configured to never upgrade certain packages, or to upgrade them only when critical vulnerabilities or instabilities are found in the previous version, as defined by the packager of the software. This process is sometimes called version pinning.

For instance:

  • yum supports this with the syntax exclude=openoffice*,[5]
  • pacman with IgnorePkg = openoffice[6] (to suppress upgrading openoffice in both cases)
  • APT extends the hold flag through the complex "pinning" mechanism[7]
    • Users can also blacklist a package[8]
  • aptitude has "hold" and "forbid" flags
  • portage supports this through the package.mask configuration file

Cascading package removal[edit]

Some of the more advanced package management features offer "cascading package removal",[6] in which all packages that depend on the target package and all packages that only the target package depends on, are also removed.

Common package management systems and formats[edit]

Package formats[edit]



Alien is a program that converts between different Linux package formats. It supports conversion between Linux Standard Base (LSB), LSB-compliant .rpm packages,[9] .deb, Stampede (.slp), Solaris (.pkg) and Slackware (.tgz, .txz, .tbz, .tlz)[10] packages.

Free and open source software systems[edit]


Application-level package managers[edit]

Besides the systems-level application managers, there are some add-on package managers for operating systems with limited capabilities and for programming languages where developers need the latest libraries.

In contrast to systems-level application managers, application-level package managers focus on a small part of the software system. They typically reside within a directory tree that is not maintained by the systems-level package manager (like c:\cygwin or /usr/local/fink). However, this is not the case for the package managers that deal with programming libraries. This leads to a conflict as both package managers claim to "own" a file and might break upgrades.

See also[edit]


  1. ^ "Software Distribution". Dell KACE. Retrieved 2012-07-11. 
  2. ^ "How package management changed everything". Retrieved 2008-03-01. 
  3. ^ Chris, Tucker (2007-03-15). Optimal Package Install/Uninstall Manager. UC San Diego. p. 1. Retrieved 2011-09-14. 
  4. ^ "Linux repository classification schemes". Retrieved 2008-03-01. 
  6. ^ a b "pacman(8) Manual Page". Retrieved 2008-03-01. 
  8. ^ "Apt pinning to blacklist a package". Retrieved 2010-08-19. 
  10. ^ "Slackware: Package management". Retrieved 2013-10-04. 

External links[edit]