Dpkg

**dpkg** er pakkesystemet i Linuxdistribusjonen Debian og alle dens tallrike derivater.

Selve `dpkg` er et underliggende verktøy eller en *back end*. Det benyttes av andre verktøy på høyere nivåer. Advanced Packaging Tool (APT) er presentasjonslaget til `dpkg`.

Første versjon ble lansert i januar 1994. Siste versjon er 1.22.21 som ble lansert 2. juli 2025. 

Debianpakken *dpkg-dev* inkluderer verktøyene som kreves for å lage .deb-pakker og beskrives under:

## Historie
Det første pakkesystemet for Linux var *StopAlop*. Det ble laget av Greg Wettstein ved *Roger Maris Cancer Center* i Fargo, Nord-Dakota. Det ga inspirasjon til skapelsen av *dpkg*.

*dpkg* ble laget av Ian Murdock (1973&ndash;2015) i januar 1994 som et skallskript. 

Senere i 1994 ble det omskrevet av Matt Welsh, Carl Streeter og Ian Murdock i  programmeringsspråket Perl.

Enda senere i 1994 ble mesteparten omskrevet i programmeringsspråket C av Ian Jackson.

## Etymologi
*dpkg* var opprinnelig en forkortelse for *Debian Package*, men kan også stå for filetternavnet .deb og for *Debian Policy Manual*.

## Utbredelse
Det finnes mange pakkesystemer for Linux. *Dkpg* er et av de mest utbredte. Det benyttes av distribusjonen Debian og dens tallrike derivater.

Pakkesystemet *dpkg* brukes blant annet av distribusjonene Ubuntu, Linux Mint, Tails, Proxmox, Kali Linux, Pardus og Astra Linux. Nettstedet DistroWatch oppramset 23. januar 2026 hele 511 nåværende og tidligere Linuxdistribusjoner som bruker eller har brukt pakkesystemet *dpkg*.

Et annet utbredt pakkesystem er RPM Package Manager (RPM). Det ble utviklet av Red Hat for Red Hat Linux, og benyttes idag av Fedora, Red Hat Enterprise Linux, og deriverte distribusjoner som SUSE Linux og OpenMandriva Lx. Nettstedet DistroWatch oppramset 9. mars 2026 hele 231 nåværende og tidligere Linuxdistribusjoner som bruker eller har brukt pakkesystemet RPM.

Liksom `dpkg` har sin opprinnelse i `StopAlop`, slik er RMP en videreutvikling av `pms`. Og slik `dpkg` har APT som presentasjonslag, slik er DNF presentasjonslaget til RMP.

## Tilleggsprogrammer
Flere tilleggsprogrammer er nødvendige for å gi `dpkg` kjøretidsfunksjonalitet. Av disse kan nevnes `dpkg-statoverride`, `dpkg-divert` og `update-alternatives`.

Det omfatter også programmer som `start-stop-daemon`  og `install-info`. Det siste beholdes mest for bakoverkompatibilitet. Det utvikles og distribueres separat i dag.

## Å lage .deb-filer

.deb-filer bygges vanligvis ved å kalle *dpkg-buildpackage*. dpkg-buildpackage leser flere filer for å finne ut hvordan pakken skal bygges. Disse filene finnes i *debian* underkatalogen av kildetreet.

Det er fire filer som kreves, *copyright*-filen inneholder lisensbetingelsene. *control*-filen inneholder pakkenavnet, -beskrivelse, og avhengigheter. *rules*-filen er en Makefile som har regler for å bygge debianpakken. Programmer fra debhelper programpakken blir ofte kalt i **rules''-filen. I tillegg inkluderer noen pakker ''Makefile''-linjer fra [[CDBS]], for å forenkle ''rules''-filen. Til slutt er ''changelog''-filen, som burde inneholde en logg over forandringene. Det fleste pakkene inkluderer også andre filer for å gjøre forskjellige ting.

Så snart en debianpakke blir bygget, kan den bli sjekket for vanlige problemer ved hjelp av et [[lintian]] verktøy.

== dpkg kompileringsverktøy ==
Debian har en rekke verktøy som kalles for å bygge en pakke. De er følgende: 
***dpkg-source** pakker og pakker ut kildekode filene fra en debianpakke.
***dpkg-deb** pakker og pakker ut binærpakker.
***dpkg-gencontrol** leser informasjon fra en ikke utpakket debian-trekilde og generer en binær pakke-kontroll pakke, som lager en innføring i Debian/files.
***dpkg-shlibdeps** kalkulerer avhengighetene og kjører med hensyn til bibliotekene.
***dpkg-genchanges** leser informasjon fra et utpakket Debian-trekilde som med en gang den er laget, lager en kontrollfil. (.changes). 
***dpkg-buildpackage** er et kontrollskript som kan brukes til å konstruere pakken automatisk. 
***dpkg-distaddfile** legger en fils input til debian/files. 
***dpkg-parsechangelog** leser ''changes''-filen (endringsloggen) til et utpakket Debian-trekilde og lager passelig forberedt utdata med informasjon for disse endringene.

== Avarter ==
=== ipkg===
<code>ipkg</code> er en avart av <code>dpkg</code>. Det er et pakkesystem for Linux-installasjoner med begrenset [[harddisk]]plass.

===wpkg===

wpkg er en avart for [[Microsoft Windows]]. Den utviklet senere funksjonalitet som lignet på APT, fikk forbedret håndtering av programvarelageret og distribuering og ble portert til Linux og [[Unix-liknende]] systemer, deriblant [[Cygwin]], [[Mingw32]], [[macOS]], [[OpenSolaris]] og [[FreeBSD]].

Det beholder kompatibilitet med filformatet .deb og er utstyrt med den eksekverbare filen **wpkg.exe'''. Versjon 1.0 ble lansert 17. september 2015. Det er ikke kommet senere versjoner.

## Se også
* RPM Package Manager
* alien (programvare)
* Linux
* APT
* Ubuntu
* Debian

## Referanser


## Eksterne lenker
* 
* Debian's dpkg package
* Debian dpkg epostliste