Overview of Package Managers



There are a variety of Linux distros. Linux distros are typically classified by the package manager they use. For instance, Debian-based distros are derivatives of Debian and they use dpkg and apt-get. There are not only are wide selection of distros, but also package managers. This article will briefly discuss some of the package managers.

A package is a piece of software (or a software bundle) that has been compiled from source for a platform. In other words, a package is a ready-made software that the user can simply install on their system. The package file itself is a specialized software archive that may or may not be compressed.

A package manager is a piece or set of software used to help the user control the software on the system. Package management utilities provide users a way to install, uninstall, upgrade, obtain, etc. software on the system. Many GUI frontends are available for package managers for users who prefer GUI's over the command-line.

Debian (dpkg)
dpkg and apt-get are use in Debian-based distros such as Ubuntu, Linux Mint, and Raspbian. dpkg performs the general install, uninstall, reinstall, etc. operations while apt-get manages the more advanced abilities like repos, dependencies, etc. Debian package files use the "*.deb" file-extension.

RedHat (rpm)
RedHat-based distros use rpm and yum. rpm is similar to dpkg and yum is similar to apt-get. Systems that use the RPM package manager use *.rpm software packages.

PackageKit is a front-end for many package management systems such as Conary, APT, Yum, OPkg, Pacman, and many others. GUIs are available for PackageKit such as Apper.

Android (APK)
Android (a popular mobile Linux distro) uses the Google PlayStore to install APK files. "*.apk" files are used by Android just as Debian systems use "*.deb" files and "*.ipa" is used by iOS. Android users can download APK files from third-party sites and install them using third-party software (if desired).

Arch (pacman)
Arch Linux and its derivatives use the Pacman package manager. Pacman's name comes from "PACkage MANager". Pacman packages use the "*.pkg.tar.xz" file extension; the files themselves are compressed tarballs.

Gentoo (Portage)
Portage is a ports-like package management system used by Gentoo, Chrome OS, and other systems. Portage is a POSIX-compatible package manager that will work on any (or nearly any) POSIX system. Portage uses an ebuild system as opposed to ready-made binaries like Yum systems use with RPM packages.

Gentoo (Paludis)
Gentoo does have an alternative to Portage called Paludis. Paludis is an ebuild-based system like Portage. Paludis is meant to be an enhanced Portage-alternative.

Puppy Linux (PPM)
Puppy Linux distros use the Puppy Package Manager (PPM) which primarily uses PET packages. PET packages are the installation files that have the *.pet file extension. PET stands for "Puppy's Extra Treats" or some people say "Puppy's Enhanced Tarballs". A PET file is just a tarball (.tar.gz) renamed to *.pet and has a md5sum appended to the end of the file (EOF).

Notice that I said PPM primarily uses PET packages. Puppy Package Manager also supports the following packages - .deb (Debian), .tgz (Slackware), .pkg.tar.gz (Arch), and DotPet. Puppy Package Manager can also access Ubuntu repositories.

NOTE: A repository (repo) is a collection of software packages that is typically hosted on a server.


Pardus (PiSi)
The Pardus Linux distro used the PiSi package manager prior to the 2013 release. Currently, Pardus is Debian-based and no distro uses PiSi.

Conary is a package management system written in Python and licensed under the Apache v2 License. Conary is used by SAS Linux and Foresight Linux. Conary packages are made in a chroot environment to provide consistent build environments and consistent packages.

Swaret is an advanced alternative to slackpkg that Slackware derivatives can use. Slackpkg does not resolve dependencies while Swaret does resolve dependencies. The name "Swaret" comes from "SlackWARE Tool". Swaret is a shell script. There is a Qt GUI frontend for Swaret called Kswaret.

Slackware (slackpkg and pkgtools)
Slackware uses slackpkg and pkgtool. Slackpkg does not check or resolve dependencies. Slackware package files may use the extensions ".tgz", ".txz", ".tbz", or ".tlz". Slackpkg is a shell script that uses pkgtool and provides an easier way to use pkgtool.

Sabayon Linux (Entropy)

Sabayon uses two package managers - Portage and Entropy. Sabayon uses Portage since Sabayon is a derivative of Gentoo. However, Entropy is specific to Sabayon. Entropy uses pre-compiled binary files while Portage compiles source code. Rigo is a GUI front-end for Entropy. "equo" is the command used in the command-line when using Entropy. For instance, to update the Entropy package database, type "equo update".

Zero Install
Zero Install (or 0install) is a cross-platform package manager for Linux, Windows, OSX, and other systems. Zero Install is decentralized and supports source code and binary files.

Many other package managers are available for Linux and other operating systems such as OpenPKG (http://www.openpkg.org/), opkg (http://git.yoctoproject.org/cgit/cgit.cgi/opkg/ or http://wiki.openwrt.org/doc/techref/opkg), ipkg (http://wiki.qnap.com/wiki/Optware_IPKG), QPKG (http://forum.qnap.com/viewforum.php?f=121 or https://www.qnap.com/i/uk/app_center/), and numerous others.

Further Reading


Members online