---
name: "dpkg-deb"
section: "8"
platform: "linux"
package: "dpkg"
version: "1.2.6elf"
release: "Debian 1.1 (Buzz)"
platforms: ["linux"]
url: "https://new.carta.tech/dpkg-deb/8"
---

# dpkg-deb(8)

Debian package archive (.deb) manipulation tool

## NAME

dpkg-deb - Debian package archive (.deb) manipulation tool

## SYNOPSIS

**dpkg-deb** **-b**\|**--build** *directory* \[*archive*\]\
 **dpkg-deb** **-I**\|**--info** *archive* \[*control-file-name* ..\]\
 **dpkg-deb** **-f**\|**--field** *archive* \[*control-field-name* ...\]\
 **dpkg-deb** **-c**\|**--contents** *archive*\
 **dpkg-deb** **-x**\|**--extract**\|**-X**\|**--vextract** *archive directory*\
 **dpkg-deb --fsys-tarfile** *archive*\
 **dpkg-deb --control** *archive directory*

## DESCRIPTION

**dpkg-deb** packs, unpacks and provides information about Debian archives.

Use **dpkg** to install and remove packages from your system.

You can also invoke **dpkg-deb** by calling **dpkg** with whatever options you want to pass to **dpkg-deb**.  **dpkg** will spot that you wanted **dpkg-deb** and run it for you.

## ACTION OPTIONS

- **-b**, **--build**

  Creates a debian archive from the filesystem tree stored in *directory*.  *directory* must have a **DEBIAN** subdirectory, which contains the control information files such as the control file itself.  This directory will *not* appear in the binary package's filesystem archive, but instead the files in it will be put in the binary package's control information area.

  Unless you specify **--no-check**, **dpkg-deb** will read **DEBIAN/control** and parse it.  It will check it for syntax errors and other problems, and display the name of the binary package being built. **dpkg-deb** will also check the permissions of the maintainer scripts and other files found in the **DEBIAN** control information directory.

  If no *archive* is specified then **dpkg-deb** will write the package into the file *directory***.deb**.

  If the archive to be created already exists it will be overwritten.

- **--info**, **-I**

  Provides information about a binary package archive.

  If no *control-file-name*s are specified then it will print a summary of the contents of the package as well as its control file.

  If any *control-file-name*s are specified then **dpkg-deb** will print them in the order they were specified; if any of the components weren't present it will print an error message to stderr about each one and exit with status 2.

- **--field**, **-f**

  Extracts control file information from a binary package archive.

  If no **control-file-field**s are specified then it will print the whole control file.

  If any are specified then **dpkg-deb** will print their contents, in the order in which they appear in the control file.  If more than one **control-file-field** is specified then **dpkg-deb** will precede each with its field name (and a colon and space).

  No errors are reported for fields requested but not found.

- **--contents**, **-c**

  Lists the contents of the filesystem tree archive portion of the package archive.  It is currently produced in the format generated by **tar**'s verbose listing.

- **--extract**, **-x**, **--vextract**, **-X**

  Extracts the filesystem tree from a package archive into the specified directory.

  **--vextract** (**-X**) prints a listing of the files extracted as it goes, while **--extract** (**-x**) is silent unless an error occurs.

  Note that extracting a package to the root directory will *not* result in a correct installation !  Use **dpkg** to install packages.

  *directory* (but not its parents) will be created if necessary.

- **--fsys-tarfile**

  Extracts the filesystem tree data from a binary package and sends it to standard output in **tar** format.  Together with **tar** this can be used to extract a particular file from a package archive.

- **--control**, **-e**

  Extracs the control information files from a package archive into the specified directory.

  If no directory is specified then a subdirectory **DEBIAN** in the current directory is used.

  The target directory (but not its parents) will be created if necessary.

- **--help**, **-h**

  Prints **dpkg-deb**'s usage message, giving a summary of its options and their uses.

- **--version**

  Prints **dpkg-deb**'s version number.

- **--licence**

  Prints information about **dpkg-deb**'s copyright licensing and lack of warranty.  (The American spelling **--license** is also supported.)

## OTHER OPTIONS

- **--new**

  Ensures that **dpkg-deb** builds a \`new' format archive.  This is the default.

- **--old**

  Forces **dpkg-deb** to build an \`old' format archive.  This old archive format is less easily parsed by non-Debian tools and is now obsolete; its only use is when building packages to be parsed by versions of dpkg older than 0.93.76 (September 1995), which was released as i386 a.out only.

- **--no-check**

  Inhibit's **dpkg-deb --build**'s usual checks on the proposed contents of an archive.  You can build any archive you want, no matter how broken, this way.

- **--debug**, **-D**

  Enables debugging output.  This is not very interesting.

## BUGS

**dpkg-deb -I** *package1***.deb** *package2***.deb** does the wrong thing.

There is no authentication on **.deb** files; in fact, there isn't even a straightforward checksum.

Do not attempt to use just **dpkg-deb** to install software !  You must use **dpkg** proper to ensure that all the files are correctly placed and the package's scripts run and its status and contents recorded.

## SEE ALSO

[**deb**(5)](/deb/5.md), [**deb-control**(5)](/deb-control/5.md), **dpkg**(5), [**dpkg**(8)](/dpkg/8.md), [**dselect**(8)](/dselect/8.md).

## AUTHOR

**dpkg-deb** and this manpage were written by Ian Jackson.  They are Copyright (C)1995-1996 by him and released under the GNU General Public Licence; there is NO WARRANTY.  See **/usr/doc/copyright/dpkg** and **/usr/doc/copyright/GPL** for details.
