A software package is an archive file containing a computer program as well as necessary metadata for its deployment.The computer program can be in source code that has to be compiled and built first.For distributions based on and files as well as Slackware Linux, there is Check Install, and for recipe-based systems such as Gentoo Linux and hybrid systems such as Arch Linux, it is possible to write a recipe first, which then ensures that the package fits into the local package database.Particularly troublesome with software upgrades are upgrades of configuration files.For example, a local administrator may download unpackaged source code, compile it, and install it.
There are tools available to ensure that locally compiled packages are integrated with the package management.
On Microsoft Windows systems, this is also called "DLL hell" when working with dynamically linked libraries. The Framework system from OPENSTEP was an attempt at solving this issue, by allowing multiple versions of libraries to be installed simultaneously, and for software packages to specify which version they were linked against.
System administrators may install and maintain software using tools other than package management software.
Package metadata include package description, package version, and dependencies (other packages that need to be installed beforehand).
Package managers are charged with the task of finding, installing, maintaining or uninstalling software packages upon the user's command.