For example, the dependency graph topological sorting used in a package manager to handle dependencies between binary components is also used in a build manager to handle the dependency between source components.
For example, many makefiles support not only building executables, but also installing them with .
Package managers are designed to eliminate the need for manual installs and updates.
The local administrator will be required to take additional measures, such as manually managing some dependencies or integrating the changes into the package manager.There are tools available to ensure that locally compiled packages are integrated with the package management.Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum, and a list of dependencies necessary for the software to run properly.Upon installation, metadata is stored in a local package database.Later a package manager typically running on some other computer downloads those pre-built binary executable packages over the internet and installs them.
However, both kinds of tools have many commonalities.
To give users more control over the kinds of software that they are allowing to be installed on their system (and sometimes due to legal or convenience reasons on the distributors' side), software is often downloaded from a number of software repositories.
When a user interacts with the package management software to bring about an upgrade, it is customary to present the user with the list of things to be done (usually the list of packages to be upgraded, and possibly giving the old and new version numbers), and allow the user to either accept the upgrade in bulk, or select individual packages for upgrades.
Problems can be caused if the format of configuration files changes; for instance, if the old configuration file does not explicitly disable new options that should be disabled.
Some package managers, such as Debian's dpkg, allow configuration during installation.
Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites.