Pre-required reads:
- Falsehoods About Versions.
- And more generally, this Awesome List of Falshoods.
- A package has a name.
- A package has only one name (see #26).
- A package name is unique.
- Package names are composed of ASCII characters.
- A package name is the same as its ID (see #11).
- There is only one way to install a package.
- Only one version of a package is available on a system.
- Package upgrades can be automated.
- All packages have a version.
- Versionned packages are immutable.
- Packages can't upgrade themselves.
- A package can be reinstalled.
- Package managers provides the latest version of packages.
- Package managers provides clean packages.
- Package managers provides stable softwares.
- Only one instance of a package manager exist on the system.
- You can downgrade packages.
- A package manager can update itself.
- A package is found under the same name in different package managers.
- Package managers can resolve dependencies.
- All dependencies are provided by the package manager.
- Package managers have a CLI.
- Package managers behave the same accross OSes and distributions.
- Package managers tracks installed versions.
- Package managers can track removed packages (see #17).
- Package managers are documented.
- A package manager has a version.
- A package manager check package integrity.
- Package managers are secure.
- Package managers can be unittested.
- Package managers can upgrade all outdated packages.
- Package managers are forbidden to upgrade other package managers.
- Packages are only managed by one package manager.
- Installing a package doesn't require a reboot.
- Package manager output is consistent.
- A package manager can upgrade a package installed by the user.
- All users on the system have access to the package manager.
- Package managers do not remove user data.
- Package managers can bootstrap themselves.
- Package managers supports maultiple architectures.
- You only need one package manager.
- Implementing a meta package manager is not a futile pursuit.