Understanding the general principles of a package manager is the foundation to utilize them. The package manager provides a repository of software stored in a dedicated file system location – even for different versions. Specific software and version may depend on other software or libraries forming a tree of dependencies. The software might be incompatible with another software, too.
The user can query available software via commands and load software using a program of the package manager via the shell command-line interface. A package manager then makes it available by manipulating shell variables. Understanding these variables is crucial to understand the system behavior and to debug issues.