Package manager
Package manager
A package manager is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for an operating system in a consistent manner. It typically maintains a database of software dependencies and version information to prevent incompatibilities and missing prerequisites. Package managers are most commonly associated with Unix-like systems, but similar tools exist for other platforms.
Common examples include APT (Debian, Ubuntu), DNF (Fedora), Pacman (Arch Linux), and Homebrew (macOS). Language-specific package managers such as npm (Node.js), pip (Python), and RubyGems handle libraries and frameworks for their respective ecosystems. Most package managers retrieve packages from one or more repositories, which are central storage locations for software.
Features
- Dependency resolution: Automatically identifies and installs required libraries or other packages.
- Repository integration: Retrieves packages from online or local repositories, often with digital signature verification.
- Version management: Tracks installed versions, supports upgrades, downgrades, and rollbacks.
- Unattended operation: Allows scripting and automation for system administration.
- Audit trails: Maintains logs of installed, removed, or modified packages.
History
Early package management concepts appeared in BSD and Solaris with tools like pkg_add and pkgrm. The Debian project introduced dpkg in 1994, followed by APT in 1998. Also in the mid‑1990s, Red Hat created RPM. Pacman was developed for Arch Linux in 2002. The rise of language-specific package managers began in the 2000s with CPAN (Perl), RubyGems (2004), and pip (2008). Over time, many package managers adopted features such as sandboxing, dependency locking (e.g., npm's package-lock.json), and support for containers.