Dpkg

Last updated
dpkg
Original author(s) Ian Murdock
Developer(s) The Debian Project
Initial releaseJanuary 1994;30 years ago (1994-01) [1]
Stable release
1.21.22 [2]   OOjs UI icon edit-ltr-progressive.svg / 24 May 2023
Preview release
1.22.5 [3]   OOjs UI icon edit-ltr-progressive.svg / 27 February 2024
Repository
Written in C, C++, Perl [4]
Operating system Unix-like
Available in42 languages [5]
Type Package manager
License GPLv2
Website wiki.debian.org/Teams/Dpkg

dpkg is the software at the base of the package management system in the free operating system Debian and its numerous derivatives. dpkg is used to install, remove, and provide information about .deb packages.

Contents

dpkg (Debian Package) itself is a low-level tool. APT (Advanced Package Tool), a higher-level tool, is more commonly used than dpkg as it can fetch packages from remote locations and deal with complex package relations, such as dependency resolution. Frontends for APT, like aptitude (ncurses) and synaptic (GTK), are used for their friendlier interfaces.

The Debian package "dpkg" provides the dpkg program, as well as several other programs necessary for run-time functioning of the packaging system, including dpkg-deb, dpkg-split, dpkg-query, dpkg-statoverride, dpkg-divert and dpkg-trigger. [6] It also includes the programs such as update-alternatives and start-stop-daemon. The install-info program used to be included as well, but was later removed [7] as it is now developed and distributed separately. [8] The Debian package "dpkg-dev" includes the numerous build tools described below.

History

The first attempt at a package management system was possibly the development of StopAlop by Greg Wettstein at the Roger Maris Cancer Center in Fargo, North Dakota. It provided inspiration for the creation of dpkg. [9] [10] [11] dpkg was originally created by Ian Murdock in January 1994 as a Shell script. [1] Matt Welsh, Carl Streeter and Ian Murdock then rewrote it in Perl, [12] and then later the main part was rewritten in C by Ian Jackson in 1994. [13] [14] The name dpkg was originally a shortening of "Debian package", but the meaning of that phrase has evolved significantly, as dpkg the software is orthogonal to the deb package format as well as the Debian Policy Manual which defines how Debian packages behave in Debian.

Example use

To install a .deb package: [15]

dpkg -i filename.deb

where filename.deb is the name of the Debian package (such as pkgname_0.00-1_amd64.deb).

The list of installed packages can be obtained with:

dpkg -l [optional pattern]

To remove an installed package:

dpkg -r packagename

Development tools

dpkg-dev contains a series of development tools required to unpack, build and upload Debian source packages. [16] These include:

Database

The dpkg database is located under/var/lib/dpkg; the "status" file contains the list of installed software on the current system. There is no information about repositories in this database. [15]

wpkg packager for Windows

wpkg was created as a dpkg look-alike that would run under the Microsoft Windows operating system. [17] It subsequently evolved to include functionality similar to parts of the APT suite, improved repository management, distribution management and was ported to Linux and Unix-like systems, including Cygwin, Mingw32, macOS, OpenSolaris and FreeBSD. [18] [19] It retains .deb file format compatibility [20] and is supplied with the ready-to-use executable wpkg.exe. As of March 2024, the most recent release of the software was in 2015. [18]

See also

Related Research Articles

<span class="mw-page-title-main">Debian</span> Linux distribution based on free and open-source software

Debian, also known as Debian GNU/Linux, is a Linux distribution composed of free and open-source software and optionally non-free firmware or software developed by the community-supported Debian Project, which was established by Ian Murdock on August 16, 1993. The first version of Debian (0.01) was released on September 15, 1993, and its first stable version (1.1) was released on June 17, 1996. The Debian Stable branch is the most popular edition for personal computers and servers. Debian is also the basis for many other distributions that have different purposes, like Proxmox for servers, Ubuntu or Linux Mint for desktops, Kali for penetration testing, and Pardus and Astra for government use.

<span class="mw-page-title-main">Package manager</span> Software tools for handling software packages

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.

<span class="mw-page-title-main">APT (software)</span> Free software package management system

Advanced package tool, or APT, is a free-software user interface that works with core libraries to handle the installation and removal of software on Debian, and Debian-based Linux distributions. APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from precompiled files or by compiling source code.

yum (software) Free and open-source command-line package management utility

The Yellowdog Updater Modified (YUM) is a free and open-source command-line package-management utility for computers running the Linux operating system using the RPM Package Manager. Though YUM has a command-line interface, several other tools provide graphical user interfaces to YUM functionality.

<span class="mw-page-title-main">Portage (software)</span> Gentoo package management system

Portage is a package management system originally created for and used by Gentoo Linux and also by ChromeOS, Calculate, Sabayon, and Funtoo Linux among others. Portage is based on the concept of ports collections. Gentoo is sometimes referred to as a meta-distribution due to the extreme flexibility of Portage, which makes it operating-system-independent. The Gentoo/Alt project was concerned with using Portage to manage other operating systems, such as BSDs, macOS and Solaris. The most notable of these implementations is the Gentoo/FreeBSD project.

deb is the format, as well as filename extension of the software package format for the Debian Linux distribution and its derivatives.

<span class="mw-page-title-main">Synaptic (software)</span> GTK GUI front end for APT package manager

Synaptic is a GTK-based graphical user interface for the APT package manager used by the Debian Linux distribution and its derivatives. Synaptic is usually used on systems based on deb packages but can also be used on systems based on RPM packages. It can be used to install, remove and upgrade software packages and to add repositories.

Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.

Wajig is a simplified wrapper to Debian's package management system dpkg/APT. Wajig provides the functionality of apt-get, dpkg, dpkg-deb, apt-cache and other tools. These tools launch as a subprocess. Wajig also provides extra functionality beyond that of the stock apt and dpkg tools. For example, the command wajig sizes provides a listing of all installed packages and the amount of disk space they require, from smallest to largest.

Ian Jackson is a longtime free software author and Debian developer. Jackson wrote dpkg, SAUCE, userv and debbugs. He used to maintain the Linux FAQ. He runs chiark.greenend.org.uk, a Linux system which is home to PuTTY among other things.

AppImage is an open-source format for distributing portable software on Linux. It aims to allow the installation of binary software independently of specific Linux distributions, a concept often referred to as upstream packaging. As a result, one AppImage can be installed and run across Ubuntu, Arch Linux, and Red Hat Enterprise Linux without needing to use different files. It aims to be a format that's self-contained, rootless, and independent of the underlying Linux distribution.

A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source or version control, or repository managers. Package managers allow automatically installing and updating repositories, sometimes called "packages".

Quilt is a software utility for managing a series of changes to the source code of any computer program. Such changes are often referred to as "patches" or "patch sets". Quilt can take an arbitrary number of patches as input and condense them into a single patch. In doing so, Quilt makes it easier for many programmers to test and evaluate the different changes amongst patches before they are permanently applied to the source code.

The Debian build toolchain is a collection of software utilities used to create Debian source packages (.dsc) and Debian binary packages from upstream source tarballs.

Nix is a cross-platform package manager. It is built with the eponymous "Nix" programming language and employs a model in which software packages are each installed into unique directories. These directory names correspond to cryptographic hashes of the contents of each package. A package's hash takes into account all of its dependencies. This solves the potential issue of installing many packages with differing versions of same shared library dependencies, and is claimed to eliminate so-called dependency hell, As a result, this package management model advertises more reliable, reproducible, and portable packages.

<span class="mw-page-title-main">RPM Package Manager</span> Package management system

RPM Package Manager (RPM) is a free and open-source package management system. The name RPM refers to the .rpm file format and the package manager program itself. RPM was intended primarily for Linux distributions; the file format is the baseline package format of the Linux Standard Base.

DebWrt is a discontinued, niche Linux distribution mainly installed on embedded systems. It was built on top of an OpenWrt base which was used to load a fully functional version of Debian from the RootFS stored on the attached USB storage device. For easy installation and deinstallation of packages it relied on the dpkg Package management system. DebWrt used the command-line interface of Bash. There was no web-based GUI interface.

A delta update is a software update that requires the user to download only those parts of the software's code that are new, or have been changed from their previous state, in contrast to having to download the entire program. The use of delta updates can save significant amounts of time and computing bandwidth. The name "delta" derives from the mathematical science use of the Greek letter delta, Δ or δ to denote change.

Zstandard is a lossless data compression algorithm developed by Yann Collet at Facebook. Zstd is the corresponding reference implementation in C, released as open-source software on 31 August 2016.

References

  1. 1 2 "dpkg Shell implementation". Dpkg Developers. Retrieved 2017-08-30.
  2. Guillem Jover (3 September 2023). "Release 1.21.22" . Retrieved 3 September 2023.
  3. Guillem Jover (27 February 2024). "Release 1.22.5" . Retrieved 27 February 2024.
  4. "dpkg on git.dpkg.org". Dpkg Developers. 2018-07-15. Retrieved 2018-07-15.
  5. "po/LINGUAS". Dpkg Developers. 2022-11-22.
  6. "dpkg package file list". Debian project. Retrieved 2015-03-09.
  7. Jover, Guillem. "Removal of install-info from dpkg". Debian project. Retrieved 2015-03-09.
  8. "GNU Texinfo project". GNU project. Retrieved 9 March 2015.
  9. "Linux in the Trenches". Linux Journal.
  10. The dpkg shell implementation
  11. "StopAlop 0.6 packaging/Installation facility available".
  12. "dpkg perl implementation". git (Dpkg Developers). Retrieved 2015-03-09.
  13. "dpkg C implementation". git (Dpkg Developers). Retrieved 2015-03-09.
  14. Akkerman, Wichert. "dpkg history". Archived from the original on 2015-02-07. Retrieved 2017-08-29.
  15. 1 2 "dpkg". Debian. 2012-06-05. Retrieved 2014-06-18.
  16. "dpkg-dev package file list". Debian project. Retrieved 2015-03-09.
  17. Fox, Richard (7 October 2014). "13.4.3: APT". Linux with Operating System Concepts. Routledge. p. 544. ISBN   978-1482235890.
  18. 1 2 "A Build System with wpkg". Alexis Wilke. 2013-11-06. Retrieved 2013-08-28.
  19. "wpkg --repository ..." Alexis Wilke. 2012-12-05. Retrieved 2013-08-28.
  20. "A Unix Packager For MS-Windows Systems". Alexis Wilke. Retrieved 2018-11-05.