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.

Provenance