A package manager is a tool that automates the installation, upgrade, configuration and removal of software libraries and their dependencies from curated repositories. It resolves version constraints across a dependency graph and records lockfiles so environments are reproducible. Package managers are foundational infrastructure for modern software development and continuous integration.
Overview
- Resolves a dependency graph against declared version constraints.
- Lockfiles freeze the exact resolved set so builds are deterministic.
- Examples span language ecosystems and operating-system packaging.
Key aspects
- Dependency resolution computes a consistent set of compatible versions.
- Lockfiles and content hashes guarantee reproducible installs.
- Repositories distribute and index published packages.
- Integrity verification mitigates supply-chain tampering.
Applications
- Reproducible developer and CI environments.
- Sharing and reusing libraries across projects.
- Managing toolchains for machine-learning workflows.