A package management system is a collection of tools to automate the process of installing, upgrading, configuring, and removing software packages from a computer. The term is most commonly used with regards to UNIX-like systems, particularly Linux, as these systems rely far more heavily on it, with thousands of discrete packages on a typical installation being common.
In such a system, the software is distributed in packages, usually encapsulated into a single file. The file, as well as the software itself, often contains information that describes the package's details, including its name, checksums, and dependencies on any other packages that it needs to work. It may also include information on how to configure the package for use and how to remove the package cleanly when it is no longer required. The package manager then uses this information to install, configure, and remove packages as requested by the user.
Some well-known examples of package management systems include:
- RPM, Red Hat's package manager, used not only by Red Hat Linux but by several other Linux distributions.
- dpkg/APT (used originally by Debian GNU/Linux, now ported to other systems).
- Portage, used by Gentoo Linux and inspired by the BSD ports system.
- The "ports tree" system used by FreeBSD, NetBSD, OpenBSD and the like.