fbpx
Wikipedia

Package manager

A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.[1]

Synaptic, example of a package manager

A package manager deals with packages, distributions of software and data in archive files. Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum (preferably a cryptographic hash function), and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database. Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites. They work closely with software repositories, binary repository managers, and app stores.

Package managers are designed to eliminate the need for manual installs and updates. This can be particularly useful for large enterprises whose operating systems typically consist of hundreds or even tens of thousands of distinct software packages.[2]

History Edit

An early package manager was SMIT (and its backend installp) from IBM AIX. SMIT was introduced with AIX 3.0 in 1989.

Early package managers, from around 1994, had no automatic dependency resolution[3] but could already drastically simplify the process of adding and removing software from a running system.[4]

By around 1995, beginning with CPAN, package managers began doing the work of downloading packages from a repository, automatically resolving its dependencies and installing them as needed, making it much easier to install, uninstall and update software from a system.[5]

Functions Edit

 
Illustration of a package manager being used to download new software. Manual actions can include accepting a license agreement or selecting some package-specific configuration options.

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.[6] 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. Typical functions of a package management system include:

  • Working with file archivers to extract package archives
  • Ensuring the integrity and authenticity of the package by verifying their checksums and digital certificates, respectively
  • Looking up, downloading, installing, or updating existing software from a software repository or app store
  • Grouping packages by function to reduce user confusion
  • Managing dependencies to ensure a package is installed with all packages it requires, thus avoiding "dependency hell"

Challenges with shared libraries Edit

Computer systems that rely on dynamic library linking, instead of static library linking, share executable libraries of machine instructions across packages and applications. In these systems, conflicting relationships between different packages requiring different versions of libraries results in a challenge colloquially known as "dependency hell". On Microsoft Windows systems, this is also called "DLL hell" when working with dynamically linked libraries.[7]

Modern package managers have mostly solved these problems, by allowing parallel installation of multiple versions of a library (e.g. OPENSTEP's Framework system), a dependency of any kind (e.g. slots in Gentoo Portage), and even of packages compiled with different compiler versions (e.g. dynamic libraries built by the Glasgow Haskell Compiler, where a stable ABI does not exist), in order to enable other packages to specify which version they were linked or even installed against.

Front-ends for locally compiled packages Edit

System administrators may install and maintain software using tools other than package management software. For example, a local administrator may download unpackaged source code, compile it, and install it. This may cause the state of the local system to fall out of synchronization with the state of the package manager's database. 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. For distributions based on .deb and .rpm files as well as Slackware Linux, there is CheckInstall, 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.[citation needed]

Maintenance of configuration Edit

Particularly troublesome with software upgrades are upgrades of configuration files. Since package managers, at least on Unix systems, originated as extensions of file archiving utilities, they can usually only either overwrite or retain configuration files, rather than applying rules to them. There are exceptions to this that usually apply to kernel configuration (which, if broken, will render the computer unusable after a restart). 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. In other situations, it is desirable to install packages with the default configuration and then overwrite this configuration, for instance, in headless installations to a large number of computers. This kind of pre-configured installation is also supported by dpkg.

Repositories Edit

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.[8]

Upgrade suppression Edit

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 actions to be executed (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. Many package managers can be configured to never upgrade certain packages, or to upgrade them only when critical vulnerabilities or instabilities are found in the previous version, as defined by the packager of the software. This process is sometimes called version pinning.

For instance:

  • yum supports this with the syntax exclude=openoffice*[9]
  • pacman with IgnorePkg= openoffice[10] (to suppress upgrading openoffice in both cases)
  • dpkg and dselect support this partially through the hold flag in package selections
  • APT extends the hold flag through the complex "pinning" mechanism[11] (Users can also blacklist a package[12])
  • aptitude has "hold" and "forbid" flags
  • portage supports this through the package.mask configuration file

Cascading package removal Edit

Some of the more advanced package management features offer "cascading package removal",[10] in which all packages that depend on the target package and all packages that only the target package depends on, are also removed.

Comparison of commands Edit

Although the commands are specific for every particular package manager, they are to a large extent translatable, as most package managers offer similar functions.

${PKG} is the package name.
Action zypper[13] pacman apt dnf (yum) swupd[14] portage Nix Homebrew WinGet xbps[15]
Install package zypper in ${PKG} pacman -S ${PKG} apt install ${PKG} dnf install ${PKG} swupd bundle-add ${PKG} emerge ${PKG} nix-env -i ${PKG} brew install ${PKG} winget install %PKG% xbps-install ${PKG}
Remove package zypper rm -RU ${PKG} pacman -R ${PKG} apt remove ${PKG} dnf remove --nodeps ${PKG} swupd bundle-remove ${PKG} emerge -C ${PKG} or
emerge --unmerge ${PKG}
nix-env -e ${PKG} brew rm ${PKG}
(rm is shorthand for remove or uninstall)
winget uninstall %PKG% xbps-remove ${PKG}
Remove package (and orphans) zypper rm -u --force-resolution ${PKG} pacman -Rs ${PKG} apt autoremove ${PKG} dnf remove ${PKG}
swupd bundle-remove ${PKG} && \ swupd bundle-remove --orphans 
emerge -c ${PKG} or
emerge --depclean ${PKG}
nix-env -e ${PKG} && nix-env -u
brew rm ${PKG} && \ brew autoremove 
winget uninstall %PKG% xbps-remove -R ${PKG}
Update software database zypper ref pacman -Sy apt update dnf check-update swupd update --download or
swupd update --update-search-file-index
emerge --sync nix-channel --upgrade brew update winget list > NUL xbps-install -S
Show updatable packages zypper lu pacman -Qu apt list --upgradable dnf check-update swupd update -s or
swupd check-update
emerge -avtuDN --with-bdeps=y @world or
emerge -u --pretend @world
(-D is shorthand for --deep and
-u is shorthand for --update.)
nix-channel --upgrade && \ nix-env -u && \ nix-collect-garbage 
brew outdated winget upgrade ./xbps-src update-check ${PKG}(requires void-packages repository)
Delete orphans and config zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase ${PKG}
swupd bundle-remove --orphans && \ swupd clean --all 
emerge --depclean nix-collect-garbage -d brew unlink ${PKG} && brew clean xbps-remove -of
Show orphans zypper pa --orphaned --unneeded pacman -Qdt package-cleanup -q --leaves --exclude-bin
(-q is shorthand for --quiet.)
swupd bundle-list --orphans emerge -caD or
emerge --depclean --pretend
xbps-remove -o
Update all zypper up pacman -Syu apt upgrade dnf update swupd update emerge -u -D --with-bdeps=y @world nix-env -u && nix-collect-garbage brew upgrade winget upgrade --all xbps-install -Su

The Arch Linux Pacman/Rosetta wiki offers an extensive overview.[16]

Prevalence Edit

Package managers like dpkg have existed as early as 1994.[17]

Linux distributions oriented to binary packages rely heavily on package management systems as their primary means of managing and maintaining software. Mobile operating systems such as Android (Linux-based), iOS (Unix-based), and Windows Phone rely almost exclusively on their respective vendors' app stores and thus use their own dedicated package management systems.

Comparison with installers Edit

A package manager is often called an "install manager", which can lead to a confusion between package managers and installers. The differences include:

Criterion Package manager Installer
Shipped with Usually, the operating system Each computer program
Location of installation information One central installation database It is entirely at the discretion of the installer. It could be a file within the app's folder, or among the operating system's files and folders. At best, they may register themselves with an uninstallers list without exposing installation information.
Scope of maintenance Potentially all packages on the system Only the product with which it was bundled
Developed by One package manager vendor Multiple installer vendors
Package format A handful of well-known formats There could be as many formats as the number of apps
Package format compatibility Can be consumed as long as the package manager supports it. Either newer versions of the package manager keep supporting it or the user does not upgrade the package manager. The installer is always compatible with its archive format, if it uses any. However, installers, like all computer programs, may be affected by software rot.

Comparison with build automation utility Edit

Most software configuration management systems treat building software and deploying software as separate, independent steps. A build automation utility typically takes human-readable source code files already on a computer, and automates the process of converting them into a binary executable package on the same or remote computer. 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:

  • 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 make install.
  • For example, every package manager for a source-based distributionPortage, Sorcery, Homebrew, etc. – supports converting human-readable source code to binary executables and installing it.

A few tools, such as Maak and A-A-P, are designed to handle both building and deployment, and can be used as either a build automation utility or as a package manager or both.[18]

Comparison with app stores Edit

App stores can also be considered application-level package managers. Unlike traditional package managers, app stores are designed to enable payment for the software itself (instead of for software development), and may only offer monolithic packages with no dependencies or dependency resolution. They are usually extremely limited in their management functionality, due to a strong focus on simplification over power or emergence, and common in commercial operating systems and locked-down “smart” devices.

Common package managers and formats Edit

Universal package manager Edit

Also known as binary repository manager, it is a software tool designed to optimize the download and storage of binary files, artifacts and packages used and produced in the software development process.[19] These package managers aim to standardize the way enterprises treat all package types. They give users the ability to apply security and compliance metrics across all artifact types. Universal package managers have been referred to as being at the center of a DevOps toolchain.[20]

Package formats Edit

Each package manager relies on the format and metadata of the packages it can manage. That is, package managers need groups of files to be bundled for the specific package manager along with appropriate metadata, such as dependencies. Often, a core set of utilities manages the basic installation from these packages and multiple package managers use these utilities to provide additional functionality.

For example, yum relies on rpm as a backend. Yum extends the functionality of the backend by adding features such as simple configuration for maintaining a network of systems. As another example, the Synaptic Package Manager provides a graphical user interface by using the Advanced Packaging Tool (apt) library, which, in turn, relies on dpkg for core functionality.

Alien is a program that converts between different Linux package formats, supporting conversion between Linux Standard Base (LSB) compliant .rpm packages, .deb, Stampede (.slp), Solaris (.pkg) and Slackware (.tgz, .txz, .tbz, .tlz) packages.

In mobile operating systems, Google Play consumes Android application package (APK) package format while Microsoft Store uses APPX and XAP formats. (Both Google Play and Microsoft Store have eponymous package managers.)

Free and open source software systems Edit

By the nature of free and open source software, packages under similar and compatible licenses are available for use on a number of operating systems. These packages can be combined and distributed using configurable and internally complex packaging systems to handle many permutations of software and manage version-specific dependencies and conflicts. Some packaging systems of free and open source software are also themselves released as free and open source software. One typical difference between package management in proprietary operating systems, such as Mac OS X and Windows, and those in free and open source software, such as Linux, is that free and open source software systems permit third-party packages to also be installed and upgraded through the same mechanism, whereas the package managers of Mac OS X and Windows will only upgrade software provided by Apple and Microsoft, respectively (with the exception of some third party drivers in Windows). The ability to continuously upgrade third-party software is typically added by adding the URL of the corresponding repository to the package management's configuration file.

Application-level package managers Edit

Beside the system-level application managers, there are some add-on package managers for operating systems with limited capabilities and for programming languages in which developers need the latest libraries.

Unlike system-level package managers, application-level package managers focus on a small part of the software system. They typically reside within a directory tree that is not maintained by the system-level package manager, such as c:\cygwin or /opt/sw.[21] However, this might not be the case for the package managers that deal with programming libraries, leading to a possible conflict as both package managers may claim to "own" a file and might break upgrades.

Data Dependency Management Edit

In 2016, Edgard Marx, a computer scientist from Leipzig University, coined the term Data Dependency Management[22] to refer to the systems that deal with the management of data. Data Dependency Management systems are designed to facilitate the deployment and management of data on the cloud, personal computers, or smart devices (edge). Data Dependency Management frameworks can be used to describe how the data was conceived, licensing as well as its dependencies. The concept of data dependency management comes from software package dependency management tools such as npm for JavaScript, gem for Ruby, and NuGet for .NET. Their rationale is to allow users to manage the software dependency on data, such as machine learning models for data-driven applications. They are useful to publish, locate, and install data packages. A typical example of a data dependency management frameworks are Hugging Face, KBox,[23] among others.

Impact Edit

Ian Murdock had commented that package management is "the single biggest advancement Linux has brought to the industry", that it blurs the boundaries between operating system and applications, and that it makes it "easier to push new innovations [...] into the marketplace and [...] evolve the OS".[24]

There is also a conference for package manager developers known as PackagingCon. It was established in 2021 with the aim to understand different approaches to package management.[25]

See also Edit

References Edit

  1. ^ . Archived from the original on 17 October 2017. Retrieved 19 December 2018.
  2. ^ . Dell KACE. Archived from the original on 3 October 2015. Retrieved 11 July 2012.
  3. ^ "The history of *nix package management". 14 August 2017. from the original on 24 October 2021. Retrieved 12 October 2021.
  4. ^ "A review of InfoMagic's December 1994 Release". from the original on 29 October 2021. Retrieved 12 October 2021.
  5. ^ "The Timeline of Perl and its Culture". from the original on 11 January 2013. Retrieved 29 October 2021.
  6. ^ Ludovic Courtès, Functional Package Management with Guix 15 May 2020 at the Wayback Machine, June 2013, Madrid, European Lisp Symposium 2013
  7. ^ Tucker, Chris (15 March 2007). "OPIUM: Optimal Package Install/Uninstall Manager" (PDF). 29th International Conference on Software Engineering (ICSE'07). UC San Diego. p. 1. doi:10.1109/ICSE.2007.59. ISBN 978-0-7695-2828-1. S2CID 1279451. (PDF) from the original on 14 June 2011. Retrieved 14 September 2011.
  8. ^ "Linux repository classification schemes". braintickle.blogspot.com. 13 January 2006. from the original on 11 October 2007. Retrieved 1 March 2008.
  9. ^ . centos.org. Archived from the original on 2 November 2007. Retrieved 1 March 2008.{{cite web}}: CS1 maint: unfit URL (link)
  10. ^ a b "pacman(8) Manual Page". archlinux.org. from the original on 31 August 2019. Retrieved 1 March 2008.
  11. ^ "How to keep specific versions of packages installed (complex)". debian.org. from the original on 14 November 2019. Retrieved 1 March 2008.
  12. ^ . Archived from the original on 22 July 2011. Retrieved 19 August 2010.
  13. ^ "documentation/sles11". en.opensuse.org. from the original on 1 December 2022. Retrieved 16 August 2017.
  14. ^ "swupd-client/swupd.1.rst at master · clearlinux/swupd-client · GitHub". github.com. from the original on 7 December 2022. Retrieved 22 June 2022.
  15. ^ "XBPS Package Manager - Void Linux Handbook". docs.voidlinux.org. from the original on 23 January 2023. Retrieved 19 December 2022.
  16. ^ "Pacman/Rosetta – ArchWiki". wiki.archlinux.org. from the original on 20 November 2016. Retrieved 17 September 2017.
  17. ^ . Archived from the original on 2 April 2015. Retrieved 19 December 2018.
  18. ^ Eelco Dolstra, "Integrating Software Construction and Software Deployment" 21 September 2019 at the Wayback Machine.
  19. ^ Waters, John K. (8 September 2015). "JFrog Releases 'Universal' Artifact Repository". ADT Mag. Application Development Trends Magazine. from the original on 2 March 2016. Retrieved 19 February 2016.
  20. ^ Decoster, Xavier (18 August 2013). "An Overview of the NuGet Ecosystem". CodeProject.com. from the original on 5 July 2020. Retrieved 6 February 2020.
  21. ^ "Fink – Home". finkproject.org. from the original on 18 August 2021. Retrieved 2 September 2021.
  22. ^ "Data Dependency Management". github.com. Retrieved 13 July 2023.
  23. ^ "KBox". gieeexplore.ieee.org: 125–132. January 2017. doi:10.1109/ICSC.2017.77. S2CID 14980310. Retrieved 13 July 2023.
  24. ^ . ianmurdock.com. Archived from the original on 23 February 2009. Retrieved 1 March 2008.
  25. ^ "PackagingCon 2021 – a conference for package manager developers and packagers". packaging-con.org. from the original on 2 September 2021. Retrieved 2 September 2021.

External links Edit

  • Package Management Cheatsheet from Distrowatch
  • ArchLinux Rosetta Stone – Command Line Comparison for Package Managers
  • upkg universal package manager a wrapper that provides same syntax for all flavors of Linux

package, manager, this, article, needs, additional, citations, verification, please, help, improve, this, article, adding, citations, reliable, sources, unsourced, material, challenged, removed, find, sources, news, newspapers, books, scholar, jstor, december,. This article needs additional citations for verification Please help improve this article by adding citations to reliable sources Unsourced material may be challenged and removed Find sources Package manager news newspapers books scholar JSTOR December 2022 Learn how and when to remove this template message A package manager or package management system is a collection of software tools that automates the process of installing upgrading configuring and removing computer programs for a computer in a consistent manner 1 Synaptic example of a package managerA package manager deals with packages distributions of software and data in archive files Packages contain metadata such as the software s name description of its purpose version number vendor checksum preferably a cryptographic hash function and a list of dependencies necessary for the software to run properly Upon installation metadata is stored in a local package database Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites They work closely with software repositories binary repository managers and app stores Package managers are designed to eliminate the need for manual installs and updates This can be particularly useful for large enterprises whose operating systems typically consist of hundreds or even tens of thousands of distinct software packages 2 Contents 1 History 2 Functions 2 1 Challenges with shared libraries 2 2 Front ends for locally compiled packages 2 3 Maintenance of configuration 2 4 Repositories 2 5 Upgrade suppression 2 6 Cascading package removal 2 7 Comparison of commands 3 Prevalence 4 Comparison with installers 5 Comparison with build automation utility 6 Comparison with app stores 7 Common package managers and formats 7 1 Universal package manager 7 2 Package formats 7 3 Free and open source software systems 7 4 Application level package managers 7 5 Data Dependency Management 8 Impact 9 See also 10 References 11 External linksHistory EditAn early package manager was SMIT and its backend installp from IBM AIX SMIT was introduced with AIX 3 0 in 1989 Early package managers from around 1994 had no automatic dependency resolution 3 but could already drastically simplify the process of adding and removing software from a running system 4 By around 1995 beginning with CPAN package managers began doing the work of downloading packages from a repository automatically resolving its dependencies and installing them as needed making it much easier to install uninstall and update software from a system 5 Functions Edit nbsp Illustration of a package manager being used to download new software Manual actions can include accepting a license agreement or selecting some package specific configuration options 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 6 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 Typical functions of a package management system include Working with file archivers to extract package archives Ensuring the integrity and authenticity of the package by verifying their checksums and digital certificates respectively Looking up downloading installing or updating existing software from a software repository or app store Grouping packages by function to reduce user confusion Managing dependencies to ensure a package is installed with all packages it requires thus avoiding dependency hell Challenges with shared libraries Edit Computer systems that rely on dynamic library linking instead of static library linking share executable libraries of machine instructions across packages and applications In these systems conflicting relationships between different packages requiring different versions of libraries results in a challenge colloquially known as dependency hell On Microsoft Windows systems this is also called DLL hell when working with dynamically linked libraries 7 Modern package managers have mostly solved these problems by allowing parallel installation of multiple versions of a library e g OPENSTEP s Framework system a dependency of any kind e g slots in Gentoo Portage and even of packages compiled with different compiler versions e g dynamic libraries built by the Glasgow Haskell Compiler where a stable ABI does not exist in order to enable other packages to specify which version they were linked or even installed against Front ends for locally compiled packages Edit System administrators may install and maintain software using tools other than package management software For example a local administrator may download unpackaged source code compile it and install it This may cause the state of the local system to fall out of synchronization with the state of the package manager s database 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 For distributions based on deb and rpm files as well as Slackware Linux there is CheckInstall 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 citation needed Maintenance of configuration Edit Particularly troublesome with software upgrades are upgrades of configuration files Since package managers at least on Unix systems originated as extensions of file archiving utilities they can usually only either overwrite or retain configuration files rather than applying rules to them There are exceptions to this that usually apply to kernel configuration which if broken will render the computer unusable after a restart 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 In other situations it is desirable to install packages with the default configuration and then overwrite this configuration for instance in headless installations to a large number of computers This kind of pre configured installation is also supported by dpkg Repositories Edit 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 8 Upgrade suppression Edit 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 actions to be executed 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 Many package managers can be configured to never upgrade certain packages or to upgrade them only when critical vulnerabilities or instabilities are found in the previous version as defined by the packager of the software This process is sometimes called version pinning For instance yum supports this with the syntax exclude openoffice 9 pacman with IgnorePkg openoffice 10 to suppress upgrading openoffice in both cases dpkg and dselect support this partially through the hold flag in package selections APT extends the hold flag through the complex pinning mechanism 11 Users can also blacklist a package 12 aptitude has hold and forbid flags portage supports this through the package mask configuration fileCascading package removal Edit Some of the more advanced package management features offer cascading package removal 10 in which all packages that depend on the target package and all packages that only the target package depends on are also removed Comparison of commands Edit Although the commands are specific for every particular package manager they are to a large extent translatable as most package managers offer similar functions span class si span span class nv PKG span span class si span is the package name Action zypper 13 pacman apt dnf yum swupd 14 portage Nix Homebrew WinGet xbps 15 Install package zypper span class w span span class k in span span class w span span class si span span class nv PKG span span class si span pacman span class w span S span class w span span class si span span class nv PKG span span class si span apt span class w span install span class w span span class si span span class nv PKG span span class si span dnf span class w span install span class w span span class si span span class nv PKG span span class si span swupd span class w span bundle add span class w span span class si span span class nv PKG span span class si span emerge span class w span span class si span span class nv PKG span span class si span nix env span class w span i span class w span span class si span span class nv PKG span span class si span brew span class w span install span class w span span class si span span class nv PKG span span class si span winget install span class nv PKG span xbps install span class w span span class si span span class nv PKG span span class si span Remove package zypper span class w span rm span class w span RU span class w span span class si span span class nv PKG span span class si span pacman span class w span R span class w span span class si span span class nv PKG span span class si span apt span class w span remove span class w span span class si span span class nv PKG span span class si span dnf span class w span remove span class w span nodeps span class w span span class si span span class nv PKG span span class si span swupd span class w span bundle remove span class w span span class si span span class nv PKG span span class si span emerge span class w span C span class w span span class si span span class nv PKG span span class si span or emerge span class w span unmerge span class w span span class si span span class nv PKG span span class si span nix env span class w span e span class w span span class si span span class nv PKG span span class si span brew span class w span rm span class w span span class si span span class nv PKG span span class si span rm is shorthand for remove or uninstall winget uninstall span class nv PKG span xbps remove span class w span span class si span span class nv PKG span span class si span Remove package and orphans zypper span class w span rm span class w span u span class w span force resolution span class w span span class si span span class nv PKG span span class si span pacman span class w span Rs span class w span span class si span span class nv PKG span span class si span apt span class w span autoremove span class w span span class si span span class nv PKG span span class si span dnf span class w span remove span class w span span class si span span class nv PKG span span class si span swupd bundle remove PKG amp amp swupd bundle remove orphans emerge span class w span c span class w span span class si span span class nv PKG span span class si span or emerge span class w span depclean span class w span span class si span span class nv PKG span span class si span nix env span class w span e span class w span span class si span span class nv PKG span span class si span span class w span span class o amp amp span span class w span nix env span class w span u brew rm PKG amp amp brew autoremove winget uninstall span class nv PKG span xbps remove span class w span R span class w span span class si span span class nv PKG span span class si span Update software database zypper span class w span ref pacman span class w span Sy apt span class w span update dnf span class w span check update swupd span class w span update span class w span download or swupd span class w span update span class w span update search file index emerge span class w span sync nix channel span class w span upgrade brew span class w span update winget list span class p gt span NUL xbps install span class w span SShow updatable packages zypper span class w span lu pacman span class w span Qu apt span class w span list span class w span upgradable dnf span class w span check update swupd span class w span update span class w span s or swupd span class w span check update emerge span class w span avtuDN span class w span with bdeps span class o span y span class w span world or emerge span class w span u span class w span pretend span class w span world D is shorthand for deep and u is shorthand for update nix channel upgrade amp amp nix env u amp amp nix collect garbage brew span class w span outdated winget upgrade xbps src span class w span update check span class w span span class si span span class nv PKG span span class si span requires void packages repository Delete orphans and config zypper span class w span rm span class w span u pacman span class w span Rsn span class w span span class k span pacman span class w span Qdtq span class k span apt span class w span autoremove dnf span class w span erase span class w span span class si span span class nv PKG span span class si span swupd bundle remove orphans amp amp swupd clean all emerge span class w span depclean nix collect garbage span class w span d brew span class w span unlink span class w span span class si span span class nv PKG span span class si span span class w span span class o amp amp span span class w span brew span class w span clean xbps remove span class w span ofShow orphans zypper span class w span pa span class w span orphaned span class w span unneeded pacman span class w span Qdt package cleanup span class w span q span class w span leaves span class w span exclude bin q is shorthand for quiet swupd span class w span bundle list span class w span orphans emerge span class w span caD or emerge span class w span depclean span class w span pretend xbps remove span class w span oUpdate all zypper span class w span up pacman span class w span Syu apt span class w span upgrade dnf span class w span update swupd span class w span update emerge span class w span u span class w span D span class w span with bdeps span class o span y span class w span world nix env span class w span u span class w span span class o amp amp span span class w span nix collect garbage brew span class w span upgrade winget upgrade all xbps install span class w span Su The Arch Linux Pacman Rosetta wiki offers an extensive overview 16 Prevalence EditPackage managers like dpkg have existed as early as 1994 17 Linux distributions oriented to binary packages rely heavily on package management systems as their primary means of managing and maintaining software Mobile operating systems such as Android Linux based iOS Unix based and Windows Phone rely almost exclusively on their respective vendors app stores and thus use their own dedicated package management systems nbsp apt get a CLI utility installing MediaWiki nbsp Aptitude also features a TUI nbsp Synaptic a GUI for many Linux package managers nbsp pacman a CLI utility for Arch based distributions nbsp Octopi a Qt GUI for Pacman package manager nbsp Pamac a GTK GUI for Pacman package manager nbsp Apper a Qt GUI for PackageKit nbsp GNOME Software a GTK GUI for PackageKit and Flatpak nbsp winget the Windows Package Manager CLI utility for Windows 10Comparison with installers EditA package manager is often called an install manager which can lead to a confusion between package managers and installers The differences include This box viewtalkedit Criterion Package manager InstallerShipped with Usually the operating system Each computer programLocation of installation information One central installation database It is entirely at the discretion of the installer It could be a file within the app s folder or among the operating system s files and folders At best they may register themselves with an uninstallers list without exposing installation information Scope of maintenance Potentially all packages on the system Only the product with which it was bundledDeveloped by One package manager vendor Multiple installer vendorsPackage format A handful of well known formats There could be as many formats as the number of appsPackage format compatibility Can be consumed as long as the package manager supports it Either newer versions of the package manager keep supporting it or the user does not upgrade the package manager The installer is always compatible with its archive format if it uses any However installers like all computer programs may be affected by software rot Comparison with build automation utility EditMost software configuration management systems treat building software and deploying software as separate independent steps A build automation utility typically takes human readable source code files already on a computer and automates the process of converting them into a binary executable package on the same or remote computer 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 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 make install For example every package manager for a source based distribution Portage Sorcery Homebrew etc supports converting human readable source code to binary executables and installing it A few tools such as Maak and A A P are designed to handle both building and deployment and can be used as either a build automation utility or as a package manager or both 18 Comparison with app stores EditApp stores can also be considered application level package managers Unlike traditional package managers app stores are designed to enable payment for the software itself instead of for software development and may only offer monolithic packages with no dependencies or dependency resolution They are usually extremely limited in their management functionality due to a strong focus on simplification over power or emergence and common in commercial operating systems and locked down smart devices Common package managers and formats EditUniversal package manager Edit Also known as binary repository manager it is a software tool designed to optimize the download and storage of binary files artifacts and packages used and produced in the software development process 19 These package managers aim to standardize the way enterprises treat all package types They give users the ability to apply security and compliance metrics across all artifact types Universal package managers have been referred to as being at the center of a DevOps toolchain 20 Package formats Edit Main articles Package format and File archive Each package manager relies on the format and metadata of the packages it can manage That is package managers need groups of files to be bundled for the specific package manager along with appropriate metadata such as dependencies Often a core set of utilities manages the basic installation from these packages and multiple package managers use these utilities to provide additional functionality For example yum relies on rpm as a backend Yum extends the functionality of the backend by adding features such as simple configuration for maintaining a network of systems As another example the Synaptic Package Manager provides a graphical user interface by using the Advanced Packaging Tool apt library which in turn relies on dpkg for core functionality Alien is a program that converts between different Linux package formats supporting conversion between Linux Standard Base LSB compliant rpm packages deb Stampede slp Solaris pkg and Slackware tgz txz tbz tlz packages In mobile operating systems Google Play consumes Android application package APK package format while Microsoft Store uses APPX and XAP formats Both Google Play and Microsoft Store have eponymous package managers Free and open source software systems Edit By the nature of free and open source software packages under similar and compatible licenses are available for use on a number of operating systems These packages can be combined and distributed using configurable and internally complex packaging systems to handle many permutations of software and manage version specific dependencies and conflicts Some packaging systems of free and open source software are also themselves released as free and open source software One typical difference between package management in proprietary operating systems such as Mac OS X and Windows and those in free and open source software such as Linux is that free and open source software systems permit third party packages to also be installed and upgraded through the same mechanism whereas the package managers of Mac OS X and Windows will only upgrade software provided by Apple and Microsoft respectively with the exception of some third party drivers in Windows The ability to continuously upgrade third party software is typically added by adding the URL of the corresponding repository to the package management s configuration file Application level package managers Edit See also List of software package management systems Application level package managers Beside the system level application managers there are some add on package managers for operating systems with limited capabilities and for programming languages in which developers need the latest libraries Unlike system level package managers application level package managers focus on a small part of the software system They typically reside within a directory tree that is not maintained by the system level package manager such as c cygwin or opt sw 21 However this might not be the case for the package managers that deal with programming libraries leading to a possible conflict as both package managers may claim to own a file and might break upgrades Data Dependency Management Edit In 2016 Edgard Marx a computer scientist from Leipzig University coined the term Data Dependency Management 22 to refer to the systems that deal with the management of data Data Dependency Management systems are designed to facilitate the deployment and management of data on the cloud personal computers or smart devices edge Data Dependency Management frameworks can be used to describe how the data was conceived licensing as well as its dependencies The concept of data dependency management comes from software package dependency management tools such as npm for JavaScript gem for Ruby and NuGet for NET Their rationale is to allow users to manage the software dependency on data such as machine learning models for data driven applications They are useful to publish locate and install data packages A typical example of a data dependency management frameworks are Hugging Face KBox 23 among others Impact EditIan Murdock had commented that package management is the single biggest advancement Linux has brought to the industry that it blurs the boundaries between operating system and applications and that it makes it easier to push new innovations into the marketplace and evolve the OS 24 There is also a conference for package manager developers known as PackagingCon It was established in 2021 with the aim to understand different approaches to package management 25 See also EditDependency hell Installation computer programs List of software package management systems Manifest file Package formatReferences Edit What is a package manager Archived from the original on 17 October 2017 Retrieved 19 December 2018 Software Distribution Dell KACE Archived from the original on 3 October 2015 Retrieved 11 July 2012 The history of nix package management 14 August 2017 Archived from the original on 24 October 2021 Retrieved 12 October 2021 A review of InfoMagic s December 1994 Release Archived from the original on 29 October 2021 Retrieved 12 October 2021 The Timeline of Perl and its Culture Archived from the original on 11 January 2013 Retrieved 29 October 2021 Ludovic Courtes Functional Package Management with Guix Archived 15 May 2020 at the Wayback Machine June 2013 Madrid European Lisp Symposium 2013 Tucker Chris 15 March 2007 OPIUM Optimal Package Install Uninstall Manager PDF 29th International Conference on Software Engineering ICSE 07 UC San Diego p 1 doi 10 1109 ICSE 2007 59 ISBN 978 0 7695 2828 1 S2CID 1279451 Archived PDF from the original on 14 June 2011 Retrieved 14 September 2011 Linux repository classification schemes braintickle blogspot com 13 January 2006 Archived from the original on 11 October 2007 Retrieved 1 March 2008 CentOS yum pinning rpms centos org Archived from the original on 2 November 2007 Retrieved 1 March 2008 a href Template Cite web html title Template Cite web cite web a CS1 maint unfit URL link a b pacman 8 Manual Page archlinux org Archived from the original on 31 August 2019 Retrieved 1 March 2008 How to keep specific versions of packages installed complex debian org Archived from the original on 14 November 2019 Retrieved 1 March 2008 Apt pinning to blacklist a package Archived from the original on 22 July 2011 Retrieved 19 August 2010 documentation sles11 en opensuse org Archived from the original on 1 December 2022 Retrieved 16 August 2017 swupd client swupd 1 rst at master clearlinux swupd client GitHub github com Archived from the original on 7 December 2022 Retrieved 22 June 2022 XBPS Package Manager Void Linux Handbook docs voidlinux org Archived from the original on 23 January 2023 Retrieved 19 December 2022 Pacman Rosetta ArchWiki wiki archlinux org Archived from the original on 20 November 2016 Retrieved 17 September 2017 dpkg version 0 93 15 source code Archived from the original on 2 April 2015 Retrieved 19 December 2018 Eelco Dolstra Integrating Software Construction and Software Deployment Archived 21 September 2019 at the Wayback Machine Waters John K 8 September 2015 JFrog Releases Universal Artifact Repository ADT Mag Application Development Trends Magazine Archived from the original on 2 March 2016 Retrieved 19 February 2016 Decoster Xavier 18 August 2013 An Overview of the NuGet Ecosystem CodeProject com Archived from the original on 5 July 2020 Retrieved 6 February 2020 Fink Home finkproject org Archived from the original on 18 August 2021 Retrieved 2 September 2021 Data Dependency Management github com Retrieved 13 July 2023 KBox gieeexplore ieee org 125 132 January 2017 doi 10 1109 ICSC 2017 77 S2CID 14980310 Retrieved 13 July 2023 How package management changed everything ianmurdock com Archived from the original on 23 February 2009 Retrieved 1 March 2008 PackagingCon 2021 a conference for package manager developers and packagers packaging con org Archived from the original on 2 September 2021 Retrieved 2 September 2021 External links EditPackage Management Cheatsheet from Distrowatch ArchLinux Rosetta Stone Command Line Comparison for Package Managers upkg universal package manager a wrapper that provides same syntax for all flavors of Linux Retrieved from https en wikipedia org w index php title Package manager amp oldid 1177253903, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.