A package manager is a collection of applications that provide a consistent and automatic way to install, configure, update and delete software packages from a computer.
The term is generally used on Unix systems, especially Linux, as they rely heavily on the package library, a typical installation with thousands of individual packages.
A package usually contains an application, a library, or a collection of applications/libraries, and it may be necessary to install multiple packages that it needs to work to install a particular program or application.
Examples of packet management:
Debian: dpkg
RedHat: rpm
Gentoo: emerge
ArchLinux: pacman
Slackware: pkgtool
A program package contains an application, a bookstore or a collection of applications and bookstores, usually archived. The packages also contain meta information, such as the application name, description, version number, provider, control amount, and a list of dependencies necessary for the proper functioning of the software. Upon installation, the meta information is stored in a local batch database.
Most Linux distributions use the term repository (packet store). This is a website that specifies the location of the various distribution packages. These deposits are specified in distribution-specific configuration files. Front-end applications can query warehouses and download/install new packages.
Nix is a packet manager for computer systems. As RPM, APT, and many other package managers, it is able to control the installation of packages or varied file groups, such as software applications or associated configuration data.
Nix packages are configured using a purely functional language and created explicitly for this purpose; shell scripts or any other external program (like Make) can be used to build packages from the source code.
The purely functional nature of the system allows very accurate tracking of dependencies; for example, a binary package has a source dependency on the package, the compiler, and other packages that compilation requires.
Cryptographic systems precisely determine the dependencies of compiling and executing each package, and each source or binary package is such a hash.
As a result, central binary storage bills allow transparent optimization of the core functionality of the manager package (similar to a cache of packets indexed by a cryptographic hash).
Dependencies are resolved by a hard link-like functional system in which software versions that depend on a package are not eliminated until any package is no longer dependent on them.
This can lead to a greater need for storage, but it does all the safe upgrades (guaranteed not to corrupt existing applications) and atomicity.
It also allows for multiple versions of a package, including parameterized packages, such as a program with and without a specific feature, to coexist without any interference.
Nix depends on its own directory structure for packet installation. All packages are installed in the sub-directories of the nix directory. In directory naming, different versions of a package are identified by preceding the name of the package by the associated hash code.
Nix can be used, with some reservations, as a package manager over an existing operating system, such as a GNU/Linux distribution. It can also be used to maintain any file configurations, such as server settings, in addition to packet software in a strict sense.