- Package management system
A package management system is a collection of tools to automate the process of installing, upgrading, configuring, and removing software packages from a
computer. Linuxand other Unix-likesystems typically manage thousands of discrete packages.
Packages are distributions of software and
metadatasuch as the software's full 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".
A package management system provides a consistent method of installing software. A package management system is sometimes incorrectly referred to be a same as package manager or a system install manager.
Ian Murdockhas commented that package management is "the single biggest advancement Linuxhas 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". [citeweb|title=How package management changed everything|url=http://ianmurdock.com/2007/07/21/how-package-management-changed-everything/|publisher=ianmurdock.com|accessdate=2008-03-01]
A package management system is often called a "package manager" or "install manager". This canlead to confusion between a package management system and an
installer. The differences include:
A package, for package managers, denotes a specific set of files bundled with the appropriate metadatafor use by a package manager. This can be confusing, as a programming languages often use the word "package" as a specific form of a
software library. Furthermore, that software library is typically distributed in a package of files bundled for a package manager.
Package management systems are charged with the task of organizing all of the packages installed on a system and maintaining their usability. Typical functions of a package management system include:
*Verifying file checksums to ensure correct and complete packages.
*Verifying digital signatures to authenticate the origin of packages.
*Applying file archivers to manage encapsulated files.
*Upgrading software with latest versions, typically from a software repository.
*Grouping of packages by function to help eliminate user confusion.
*Managing dependencies to ensure a package is installed with all packages it requires.
Some additional challenges are met by only a few package management systems.
Challenges with shared libraries
Computer systems which rely on
dynamic librarylinking, instead of static librarylinking, share executable libraries of machine instructions across packagesand applications. In these systems, complex 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. Good package management systems become vital on these systems.
Front-ends for locally compiled packages
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 Linuxand 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.Fact|date=July 2007
Maintenance of configuration
Particularly troublesome with software upgrades are upgrades of configuration files. Since package management systems, 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 management systems, 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 headlessinstallations to a large number of computers. (This kind of pre-configured installation is also supported by dpkg.)
In order to give users easy 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. [cite web | title=Linux repository classification schemes | url=http://braintickle.blogspot.com/2006/01/linux-repository-classification.html|publisher=braintickle.blogspot.com | accessdate=2008-03-01]
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. Many package management systems 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".
* yum supports this with the syntax "exclude=openoffice*", [citeweb|title=CentOS yum pinning rpms|url=http://lists.centos.org/pipermail/centos/2005-May/046320.html|publisher=centos.org|accessdate=2008-03-01] pacman with "IgnorePkg = openoffice" (to suppress upgrading openoffice in both cases)
* dpkg and
dselectsupport this partially through the "hold" flag in package selections
* APT extends the "hold" flag through the complex "pinning" mechanism [citeweb|title=How to keep specific versions of packages installed (complex)|url=http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.en.html#s-pin|publisher=debian.org|accessdate=2008-03-01]
* aptitude has "hold" and "forbid" flags
* portage support this through package.mask configuration file
Cascading package removal
Some of the more advanced package management features offer "cascading package removal" citeweb|title=pacman(8) Manual Page|url=http://www.archlinux.org/pacman/pacman.8.html|publisher=archlinux.org|accessdate=2008-03-01] , in which all packages that depend on the target package and all packages that only the target package depends on, are also removed, respectively.
Common package management systems and formats
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
synapticpackage manager provides a graphical user interface by using the Advanced Packaging Tool (apt) library, which, in turn, relies on dpkgfor core functionality.
See also|Linux package formats, as well as
Free software systems
By the nature of
free 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 software are also themselves released as free software. One typical difference between package management in proprietary operating systems, such as Mac OS X and Windows, and those in free software, such as Linux, is that free software systems permit third-party packages to also be installed and upgraded through the same mechanism, whereas the PMS 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.
For binary packages
dpkg, used originally by Debianand now by other systems, uses the .deb format and was the first to have a widely known dependency resolution tool (APT).
RPM Package Managerwas created by Red Hat, and is now used by a number of other Linux distributions. RPM is the Linux Standard Basepackaging format and is the base of a large number of additional tools, including apt4rpm; Red Hat's up2date; Mandriva's urpmi; openSUSE's YaST; and YUM, which is used by Fedora and Yellow Dog Linux.
* A simple
tgzpackage system combines the standard tar and gzip. Used by SlackwareLinux there are a few higher-level tools that use the same tgz packaging format, including: slapt-get, slackpkgand swaret.
* Pacman for
Arch Linuxuses pre-compiled binaries distributed in a tgz archive.
Smart Package Manager
ipkg, a dpkg-inspired, very lightweight system targeted at storage-constrained Linux systems such as embedded devices and handheld computers
pkgutils, used by CRUXLinux
PISI, used by Pardus
SFS TechnologySFS file format used in Linux Tiger and Super Ubuntu operating systems.
Mac OS X
fink, for Mac OS X, derives partially from dpkg/apt and partially from ports.
MacPorts, formerly called DarwinPorts, originated from the OpenDarwinproject.
Cygwin- a free software repository for the Windows operating system which provides many Gnu/Linux tools and an installation tool nee package manager.
Appsnap- A package manager for Windows written in Python released under the GPL.
* Appupdater - A package manager for Windows written in Python and PHP released under the GPL.
* Windows-get - A package manager for Windows written in Delphi and PHP released into the public domain.
* GetIt - Uses Appsnap, Appupdater, and Windows-get as sources and combines their repositories to one big catalog.
* SysV format (sometimes called
pkgaddformat), used by Solaris.
OpenPKGis a cross platform package management system based on the RPM Package Manager. It works on several Unix-based systems, including Linux, BSDand Solaris.
For installing using compile scripts
* Portage and emerge are used by
Gentoo Linux. They were inspired by the BSD ports system and use scripts called ebuilds to install software.
recipefile contains information on how to download, unpack, compile and install a package in GoboLinuxdistribution using its Compile tool.
apt-buildis used by distributions which use deb packages (such as Ubuntu, Debian, Xandros), allowing automatic compiling and installation of software in a deb source repository.
FreeBSD PortsCollection, sometimes known as just "ports", uses a system of Makefiles to install software from sources or binaries. MacPorts(for Mac OS X), NetBSD's " pkgsrc" and OpenBSD's ports collectionare similar.
Meta package managers
The following unify package management for several or all Linux and sometimes Unix variants. These, too, are based on the concept of a recipe file.
Autopackageuses .package files.
* epm, developed by Easy Software Products (creators of
CUPS), is a "meta packager", that allows creation of native packages for all Linux and Unix operating systems (.deb, .rpm, .tgz for Linux, pkg for Solaris and *BSD, .dmg for OS X,...) controlled from a single *.list file.
* klik aims to provide an easy way of getting software packages for most major distributions without the dependency problems so common in many other package formats.
SFS_TechnologyThis technology finally solves the problem of dependency and allows the use and exchange of software between Linux computers without changing the environment of the operating system.
Zero Installinstalls each package into its own directory and uses environment variables to let each program find its libraries. Package and dependency information is downloaded directly from the software authors' pages in an XML format, similar to an RSS Feed.
Nix Package Managermanages packages in a purely functionalway.
Proprietary software systems
A wide variety of package management systems are in common use today by
proprietary softwareoperating systems, handling the installation of both proprietary and free packages.
installpis the AIX command for Object Data Manager(ODM) databases.
Software Distributoris the HP-UXpackage manager.
* In the
Microsoft .NETframework an assembly is a partially compiled code library for use in deployment, versioning and security.
Application level package managers
Aside of the systems level application managers, there are some add-on package managers for operating systems with limited capabilities and for programming languages where developers need the latest libraries. Those include the package managers listed for Windows and OS X above as well as:
CPAN- a programming library and package manager for the Perl programming language
* PEAR - a programming library for the
PHP programming language
RubyGems- a programming library for the Ruby programming language
EasyInstall- a programming library and package manager for the Python programming language
* Cabal - a programming library and package manager for the
Haskell programming language
LuaRocks- a programming library and package manager for the Lua programming language
In contrast to systems level application managers, application level package managers focus on a small part of the operating system. They typically reside within a directory tree that is not maintained by the systems level package manager (like c:cygwin or /usr/local/fink). Though, this is not the case for the package managers that deal with programming libraries. This leads to a conflict as both package managers claim to "own" a file and might break upgrades.
Conary (package manager)
* [http://kitenet.net/~joey/pkg-comp/ Comparing Linux/UNIX Binary Package Formats]
Wikimedia Foundation. 2010.
Look at other dictionaries:
package management system — noun The tool used by an operating system (OS) to administrate addition, removal and upgrade of software applications. Examples of package management systems on different OSes are: Linux: RPM; Solaris: pkgadd; HP UX: SD UX; Debian: apt get; Win32 … Wiktionary
Encap Package Management System — The Encap package management system is an alternative to the standard Unix approach to installing local software in /usr/local/bin, /usr/local/man etc. Instead software is installed in /usr/local/encap, and running the epkg program creates… … Wikipedia
Learning management system — Pour les articles homonymes, voir LMS. Article principal : Technologies de l information et de la communication pour l éducation. Un Learning Management System (LMS) ou Learning Support System (LSS) est un système logiciel web développé pour … Wikipédia en Français
Tape Management System — A Tape Management System (TMS) is computer software that manages the usage and retention of computer backup tapes. This may be done as a stand alone function or as part of a broader backup software package.The role of a Tape Management… … Wikipedia
Database management system — A database management system (DBMS) is a software package with computer programs that control the creation, maintenance, and the use of a database. It allows organizations to conveniently develop databases for various applications by database… … Wikipedia
database management system — noun a software system that facilitates the creation and maintenance and use of an electronic database • Syn: ↑DBMS • Hypernyms: ↑software, ↑software program, ↑computer software, ↑software system, ↑software package, ↑pack … Useful english dictionary
Computerized maintenance management system — (CMMS) is also known as enterprise asset management and computerized maintenance management information system (CMMIS). A CMMS software package maintains a computer database of information about an organization’s maintenance operations, i.e.… … Wikipedia
Computerized Maintenance Management System — (CMMS) is also known as Enterprise Asset Management.A CMMS software package maintains a computer database of information about an organization’s maintenance operations. This information is intended to help maintenance workers do their jobs more… … Wikipedia
Plant Design Management System — PDMS as it is known in the 3D CAD industry, is a customizable, multi user and multi discipline, engineer controlled design software package for engineering, design and construction projects in, but not limited to, offshore and onshore oil gas… … Wikipedia
relational database management system — software package containing utilities that enable the administration of and access to relational databases, RDBMS (Computers) … English contemporary dictionary