Dpkg

Last updated
dpkg
Original author(s) Ian Murdock
Developer(s) The Debian Project
Initial releaseJanuary 1994;31 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.7 [3]   OOjs UI icon edit-ltr-progressive.svg / 17 July 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 for Linux 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]

dselect

The dpkg source package also contains dselect, a frontend software. [17]

wpkg packager for Windows

wpkg was created as a dpkg look-alike that would run under the Microsoft Windows operating system. [18] 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. [19] [20] It retains .deb file format compatibility [21] 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. [19]

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 free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kernel, and is the basis for many other Linux distributions.

<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.

<span class="mw-page-title-main">Fink (software)</span> Project to port and package open-source Unix software to macOS

The Fink project is an effort to port and package open-source Unix programs to macOS. Fink uses dpkg and APT, as well as its own frontend program, fink.

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.

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

slapt-get

slapt-get is an APT-like package management system for Slackware. Slapt-get tries to emulate the features of Debian's (apt-get) as closely as possible.

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.

<span class="mw-page-title-main">VectorLinux</span> Linux distribution

VectorLinux, abbreviated VL, was a Linux distribution for the x86 platform based on the Slackware Linux distribution, originally developed by Canadian developers Robert S. Lange and Darell Stavem. Since version 7 the Standard Edition is also available for the x86-64 platform, known as VLocity64 7.

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 is 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".

<span class="mw-page-title-main">Gjiten</span>

Gjiten is a free software dictionary application developed for Linux operating systems, using the GNOME development libraries. It functions primarily as a Japanese–English dictionary tool meant to search EDICT dictionary files, but it has other features such as hand-drawn kanji recognition. It was first published on December 25, 1999. Its current release is v2.6, available since October 28, 2006. The source code is downloadable from the developers' website.

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.

<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 (17 July 2024). "Release 1.22.7" . Retrieved 17 July 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. Siever, Ellen; et al. (2005). Linux in a Nutshell. O'Reilly. p. 620. ISBN   9780596529499.
  18. Fox, Richard (7 October 2014). "13.4.3: APT". Linux with Operating System Concepts. Routledge. p. 544. ISBN   978-1482235890.
  19. 1 2 "A Build System with wpkg". Alexis Wilke. 2013-11-06. Retrieved 2013-08-28.
  20. "wpkg --repository ..." Alexis Wilke. 2012-12-05. Retrieved 2013-08-28.
  21. "A Unix Packager For MS-Windows Systems". Alexis Wilke. Retrieved 2018-11-05.