Package (package management system)

A software package is a software that has been built from source with one of the available package management systems (PMS).[1] The package is typically provided as compiled code, with additional meta-information such as a package description, package version, or "dependencies". The package management system can evaluate this meta-information to allow package searches; to perform automatic upgrades to a newer version; to check that all dependencies of a package are fulfilled and/or to fulfill them automatically by installing missing packages.

Almost all Linux distributions are built around, and heavily based upon a package management system and every piece of software available in the online package repositories is packaged into a software package, so that the user can conveniently install, update, downgrade or uninstall them, resulting in a tidy and secure operating system.

When the version dependency allows for it, libraries are packaged independently and used commonly. This introduces something called "dependency hell", a serious burden upon the distribution maintainers. But it also reduces code duplication inside of the operating system to a minimum, and at the same time multiplies the possibilities to test the version of a library for stability and security flaws. Thus, the existence of a package management system results in Linux distributions being relatively smaller in size compared to operating systems which do not have a package management system. In conjunction with the general advantages and benefits of free software this also results in better overall security and quality, provided the package is actively maintained.

See also

References

  1. Ludovic Courtès, Functional Package Management with Guix, June 2013, Madrid, European Lisp Symposium 2013 ;