Cloud Monk's Package Manager Book (December 2024)
The Cloud Monk, Losang Jinpa, is now focused writing until end of December 2025 on his polyglot programmer compendium - concordance books Cloud Monk's Package Manager Book and DevOps for 20 Languages by Cloud Monk (with a particular focus on Cloud Native DevSecOps and Web API Security) to be published on GitHub and this Wiki. (navbar_devops_book - navbar_devops_focus
DevOps Focus: Cloud Monk is focused on “All Things DevOps”: DevOps Topics, Kubernetes DevOps Topics, Cloud Native DevOps Topics, Azure DevOps Topics, AWS DevOps Topics, GCP DevOps Topics, Python DevOps Topics, Java DevOps Topics, JavaScript DevOps Topics, Golang DevOps Topics, Linux DevOps Topics, PowerShell DevOps Topics, Windows DevOps Topics, SQL Server DevOps Topics. (navbar_devops_focus)
“DevOps is the union of people, process, and products to enable continuous delivery of value to our end users.” – Donovan Brown of Microsoft
DevOps Package Management Continuous Deployment Focus
Bibliography
Outline
NOTE: One of the most important responsibilities of a programmer is dependency management to avoid the technical debt of dependency hell.
A:
dpkg: Originally used by
Debian and now by
Ubuntu. Uses the
.deb format and was the first to have a widely known dependency resolution tool,
APT. The
ncurses-based front-end for APT,
aptitude, is also a popular package manager for Debian-based systems;
B:
Snappy: Cross-distribution package manager, non-free on the server-side, originally developed for
Ubuntu;
C:
Nix Package Manager: Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments;
C:
Pacman: Used in
Arch Linux,
Frugalware and
DeLi Linux. Its binary package format is a zstd-compressed tar archive (file extension:
.pkg.tar.zst
) built using the makepkg utility (which comes bundled with pacman) and a specialized type of shell script called a PKGBUILD;
C:
Flatpak: A containerized/sandboxed packaging format previously known as xdg-app;
Short description: This is a list of notable software package management systems, categorized first by package format (binary package format, source code package format, hybrid package format) and then by operating system family.
Binary packages
Unix-like
Linux
dpkg: Originally used by
Debian and now by
Ubuntu. Uses the
.deb format and was the first to have a widely known dependency resolution tool,
APT. The
ncurses-based front-end for APT,
aptitude, is also a popular package manager for Debian-based systems;
Entropy: Used by and created for
Sabayon Linux. It works with binary packages that are bzip2-compressed tar archives (file extension:
.tbz2
), that are created using Entropy itself, from tbz2 binaries produced by Portage: From ebuilds, a type of specialized shell script;
Flatpak: A containerized/sandboxed packaging format previously known as xdg-app;
GNU Guix: Used by the GNU System. It is based on the Nix package manager with Guile Scheme APIs and specializes in providing exclusively free software;
Homebrew: a port of the MacOS package manager of the same name (see below), formerly referred to as 'Linuxbrew';
ipkg: A
dpkg-inspired, very lightweight system targeted at storage-constrained Linux systems such as embedded devices and handheld computers. Used on
HP's webOS;
Nix Package Manager: Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments;
opkg: Fork of
ipkg lightweight package management intended for use on embedded Linux devices;
Pacman: Used in
Arch Linux,
Frugalware and
DeLi Linux. Its binary package format is a zstd-compressed tar archive (file extension:
.pkg.tar.zst
) built using the makepkg utility (which comes bundled with pacman) and a specialized type of shell script called a PKGBUILD;
PISI: Pisi stands for “Packages Installed Successfully as Intended”. Pisi package manager is used by Pisi Linux.<ref>
</ref> Pardus used to use Pisi, but migrated to APT in 2013;<ref>
</ref>
pkgsrc: A cross-platform package manager, with binary packages provided for Enterprise Linux, macOS and SmartOS by
Joyent and other vendors;
slapt-get: Which is used by Slackware and works with a binary package format that is essentially a xz-compressed tar archive with the file extension
.txz;
Snappy: Cross-distribution package manager, non-free on the server-side, originally developed for
Ubuntu;
Android
Aptoide: application for installing mobile applications which runs on the Android operating system. In Aptoide there is not a unique and centralized store; instead, each user manages their own store.
GetJar: An independent mobile phone app store founded in Lithuania in 2004;
macOS (OS X)
Fink: A port of
dpkg, it is one of the earliest package managers for
macOS;
Joyent: Provides a repository of 10,000+ binary packages for
macOS based on
pkgsrc;<ref>
</ref>
-
BSD
pkgsrc: A cross-platform package manager, with regular binary packages provided for
NetBSD,
Linux and
macOS by multiple vendors;
OpenPKG: Cross-platform package management system based on
rpm;
PC-BSD: Up to and including version 8.2<ref>
pbiDIR</ref> uses files with the
.pbi (Push Button Installer) filename extension which, when double-clicked, bring up an installation wizard program. Each PBI is self-contained and uses de-duplicated private dependencies to avoid version conflicts. An autobuild system tracks the
FreeBSD ports collection and generates new PBIs daily. PC-BSD also uses the
FreeBSD pkg binary package system; new packages are built approximately every two weeks from both a stable and rolling release branch of the
FreeBSD ports tree.
Solaris, illumos
-
-
OpenCSW: Community supported collection of packages in
SysV format for
SunOS 5.8-5.11 (Solaris 8-11);
-
iOS
Windows
-
-
-
-
-
-
-
-
-
wpkg: Open-source package manager that handles
Debian packages on
Windows. Started as a clone of
dpkg, and has many
apt-get like features too;
-
IBM z/OS on IBM z/Mainframes
Source Code-Based Package Managers
The following package management systems distribute the source code of their apps. Either the user must know how to compile the packages, or they come with a script that automates the compilation process. For example, in GoboLinux a recipe file contains information on how to download, unpack, compile and install a package using its Compile tool. In both cases, the user must provide the computing power and time needed to compile the app, and is legally responsible for the consequences of compiling the package.
ABS is used by
Arch Linux to automate binary packages building from source or even other binary archives, with automatic download and dependency checking;
apt-build is used by distributions which use
deb packages, allowing automatic compiling and installation of software in a deb source repository;
Sorcery is
Sourcemage GNU/Linux's
bash based package management program that automatically downloads software from their original site and compiles and installs it on the local machine;.
macOS (OS X){{anchor|macOS 2}}{{anchor|OS X 2}}
Fink, for
OS X, derives partially from dpkg/apt and partially from ports;
pkgsrc can be used to install software directly from source-code, or to use the binary packages provided by several independent vendors.
Windows
Hybrid systems
Nix package manager: Package manager that manages software in a
purely functional way, featuring multi-user support, atomic upgrades and rollbacks. Allows multiple versions or variants of a software to be installed at the same time. It has support for
macOS and is cross-distribution in its
Linux support;
Portage and
emerge are used by
Gentoo Linux,
Funtoo Linux, and
Sabayon Linux. It is inspired by the
BSD ports system and uses text based “ebuilds” to automatically download, customize, build, and update packages from source code. It has automatic dependency checking and allows multiple versions of a software package to be installed into different “slots” on the same system. Portage also employs “use flags” to allow the user to fully customize a software build to suit the needs of their platform in an automated fashion. While source code distribution and customization is the preferred methodology, some larger packages that would take many hours to compile on a typical desktop computer are also offered as pre-compiled binaries in order to ease installation;
Upkg: Package management and build system based on
Mono and XML specifications. Used by
paldo and previously by ExTiX Linux;
NetBSD's
pkgsrc works on several
Unix-like operating systems, with regular binary packages for
macOS and Linux provided by multiple independent vendors;
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.
AppImage (previously klik and PortableLinuxApps) aims to provide an easy way to get software packages for most major distributions without the dependency problems so common in many other package formats.
-
Zero Install installs 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.
PackageKit is a set of utilities and libraries for creating applications that can manage packages across multiple package managers using back-ends to call the correct program.
Game package managers
Package management systems geared toward developing and distributing video games.
Steam: A cross-platform video game distribution, licensing and social gameplay platform, developed and maintained by
Valve. Used to shop for, download, install, update, uninstall and back up video games. Works on Windows NT,
OS X and Linux;
Uplay: A cross-platform video game distribution, licensing and social gameplay platform, developed and maintained by
Ubisoft. Used to shop for, download, install and update video games. Works on
Windows NT and
Windows Phone, as well as
PlayStation 3,
PlayStation 4,
Xbox 360,
Xbox One,
Wii U,
iOS and
Android.
-
Proprietary software systems
A wide variety of package management systems are in common use today by proprietary software operating systems, handling the installation of both proprietary and free packages.
Application-level package managers
Bitnami: a library of installers or software packages for web applications;
-
-
Conda: a package manager for open data science platform of the
Python and
R;
CPAN: a programming library and package manager for
Perl;
CRAN: a programming library and package manager for
R;
-
Docker: Docker, a system for managing
containers, serves as a package manager for deploying containerized applications;
Enthought Canopy: a package manager for
Python scientific and analytic computing distribution and analysis environment;
Gradle: a build system and package manager for
Groovy and other JVM languages, and also
C++;
Ivy: a package manager for
Java, integrated into the
Ant build tool, also used by
sbt;
-
LuaRocks: a programming library and package manager for
Lua;
Maven: a package manager and build tool for
Java;
-
-
-
PEAR: a programming library for
PHP;
pip: a package manager for
Python and the
PyPI programming library;
-
sbt: a build tool for
Scala, uses
Ivy for dependency management;
See also
A
C
D
L
P
S
U
Y
Categories: Operating system technologySoftware distributionInstallation softwareManagement systems
Hidden categories: Commons category link is on Wikidata