Package repositories and high-level package managers
Online collections of packages for Linux distributions have existed for almost as long as the distributions themselves. They saved users’ time searching for compiled packages or building software from source, but if a package had dependencies, the user would still need to download them all one by one.
The next step for distribution maintainers was to create a format for machine-readable metadata from the entire package collection and a tool that would automate that process. Since every package contains information about its dependencies, in the simplest case, you just need to download them all.
In reality, it’s more complicated. Packages may conflict (for example, because they provide an executable with the same name) and there must be a safeguard against attempts to install conflicting packages. If a user tries to install a package from outside the repository, the repository may not have the right versions of...