dsc(5)
π dsc(5) β the Debian source package control file, explained by your favorite Unix bestie β¨
So likeβ¦ this is the manual page for dsc(5), and it lives in the dpkg suite, and honestly? It's giving β¨*backstage pass to every Debian source package*β¨. Buckle up, we're going in π«Ά
πΈ NAME πΈ
dsc β the Debian source package control file format. That's it, that's the vibe. π
π¦ SYNOPSIS π¦
filename.dsc
Literally the filename. Iconic, low-effort, we respect it. π
β¨ DESCRIPTION β¨
Okay so every Debian source package comes with a .dsc control file, and that file is stuffed with a bunch of fields, all in deb822(5) format. Think of it as the source package's little ID card πͺͺ
Each field starts with a tag β things like Source or Binary β and ngl, those tags are case insensitive. Then there's a colon, then the body of the field (and that body is case sensitive unless the page says otherwise). Fields are delimited only by field tags, no cap. So basically: field text can be multiple lines long, but the installation tools will generally join those lines when they process the body of the field β except for the multiline fields Package-List, Files, Checksums-Sha1 and Checksums-Sha256 (see below, bestie, I got you π«Ά).
Also the control data might be wrapped up in an OpenPGP ASCII Armored signature, as specified in RFC9580. Cute little armor, we love a protective layer π‘οΈ
π FIELDS π
The main character fields π
Format: format-version (required) β this field declares the format version of the source package. Programs acting on a source package use this value to interpret the list of files inside it and figure out how to unpack it. The syntax of the value is a numeric major revision ("0-9"), a period ("."), a numeric minor revision ("0-9"), and then an optional subtype after whitespace (" \t") β and if that subtype is specified, it's a lowercase alphanumeric ("a-z0-9") word in parentheses ("()"). The subtype is optional in the syntax but may be mandatory for particular source format revisions, so likeβ¦ vibe check your format π
The source formats currently supported by dpkg are 1.0, 2.0, 3.0 (native), 3.0 (quilt), 3.0 (git), 3.0 (bzr) and 3.0 (custom). Description of all of those lives in dpkg-source(1). π
Source: source-name (required) β this value determines the package name, and most installation tools use it to generate file names. It's the name-name, yk? π·οΈBinary: binary-package-list β this folded field lists the binary packages this source package can produce, separated by commas. But heads up: it's now been superseded by thePackage-Listfield, which gives enough info about which binary packages are produced on which architecture, build-profile, and other involved restrictions. SoBinaryis kinda the older sibling still living in the group chat πArchitecture: arch-list (recommended) β this list specifies on which type of machine the package runs. The value should be a list of architecture names and/or wildcards, separated by spaces.
Common architecture names and architecture wildcards are amd64, armel, i386, linux-any, any-amd64, etc. Note that the all value is meant for packages that are architecture independent, and any is for packages that are architecture dependent. The list may include (or consist solely of) the special value all. When the list contains the architecture wildcard any, the only other value allowed in the list is all β that's the rule, periodt π
The field value is generally generated from Architecture fields from in the debian/control in the source package.
Version: version-string (required) β typically this is the original package's version number, in whatever form the program's author uses. It may also include a Debian revision number (for non-native packages). The exact format and sorting algorithm are described indeb-version(7).
Note: on some vendors, dpkg has been made to permit native sources with non-native versions, making this incoherent and adding to the confusion of the concept β where in addition this tends to be a trap for accidental mistakes. π So likeβ¦ be careful, fr fr.
Origin: name β the name of the distribution this package is originating from. Where it's from, its lore πMaintainer: fullname-email (recommended) β should be in the format βJoe Bloggs <jbloggs@foo.com>β, and is typically the person who created the package, as opposed to the author of the software that was packaged. The format is described indeb-email(7). Main character energy but make it a package π«ΆUploaders: fullname-email-list β lists all the names and email addresses of co-maintainers of the package, in the same format as theMaintainerfield. Multiple co-maintainers should be separated by a comma. The format is described indeb-email(7). The whole friend group, basically πDescriptionshort-description<br> long-description β the format for the source package description is a short brief summary on the first line (after theDescriptionfield). The following lines should be used as a longer, more detailed description. Each line of the long description must be preceded by a space, and blank lines in the long description must contain a single β`.`` following the preceding space. Tiny formatting rules, big consequences, slay πHomepage: url β the upstream project home page url. Link in bio energy πStandards-Version: version-string (recommended) β documents the most recent version of the distribution policy standards this package complies with. It's the "yes I read the syllabus" field πVcs-Browser: url β the url of a web interface to browse the Version Control System repository. Web UI for the repo, we love a browse π¦Vcs-Arch: url<br>Vcs-Bzr: url<br>Vcs-Cvs: url<br>Vcs-Darcs: url<br>Vcs-Git: url<br>Vcs-Hg: url<br>Vcs-Mtn: url<br>Vcs-Svn: url β these fields declare the url of the Version Control System repository used to maintain this package. Seedeb-src-control(5)for more details. A whole little VCS family reunion πTestsuite: name-list β this field declares that the source package contains the specified test suites. The value is a comma-separated list of test suites. If theautopkgtestvalue is present, adebian/tests/controlis expected to be present; if the file is present but not the value, thendpkg-sourcewill automatically add it, preserving previous values. β¨ Testing era β¨Testsuite-Triggers: package-list β this field declares the comma-separated union of all test dependencies (Dependsfields indebian/tests/controlfile), with all restrictions removed, and OR dependencies flattened (that is, converted to separate AND relationships), except for binaries generated by this source package and its meta-dependency equivalent@.
Rationale: this field is needed because otherwise, to be able to get the test dependencies, each source package would need to be unpacked. Unpacking is expensive, your girl is efficient π
Build-Depends: package-list<br>Build-Depends-Arch: package-list<br>Build-Depends-Indep: package-list<br>Build-Conflicts: package-list<br>Build-Conflicts-Arch: package-list<br>Build-Conflicts-Indep: package-list β these fields declare relationships between the source package and packages used to build it. They are discussed in thedeb-src-control(5)manual page. Build squad assemble π₯
Package-List β the multiline glow-up β¨
The Package-List multiline field contains a list of binary packages generated by this source package. Its shape:
package package-type section priority key-value-list
- The package is the binary package name. π·οΈ
- The package-type is the binary package type, usually
deb, another common value isudeb. - The section and priority match the binary package fields of the same name, or if omitted default to
unknownandoptionalrespectively (since dpkg 1.22.13). - The key-value-list is a space separated key=value list, and the currently known optional keys are:
archβ the architecture restriction from the binary packageArchitecturefield, with spaces converted to β,β.profileβ the normalized build-profile restriction formula from the binary packageBuild-Profilefield, with ANDs (whitespace inside enclosed angle brackets) converted to β,β, and ORs (whitespace between enclosing angle brackets) to β+β. All angle brackets get removed during normalization.
Deprecated since dpkg 1.23.0, superseded by profile:v1. It's giving legacy π
profile:v1β the normalized build-profile restriction formula from the binary packageBuild-Profilefield, with ANDs (whitespace inside enclosed angle brackets) converted to β&β, and ORs (whitespace between enclosing angle brackets) to β|β. All angle brackets get removed during normalization.
Supported since dpkg 1.23.0. The fresh new version, we stan π«Ά
protectedβ if the binary package is protected, this key will contain the value of theProtectedfield, that is ayesvalue.
Supported since dpkg 1.20.1.
essentialβ if the binary package is essential, this key will contain the value of theEssentialfield, that is ayesvalue.
Files, Checksums-Sha1, Checksums-Sha256 β the checksum trio π§
Files: (required, weak)Checksums-Sha1: (required, weak)Checksums-Sha256: (required, strong)
Their line shape is:
checksum size filename
These multiline fields contain a list of files with a checksum and size for each one. They all have the same syntax and differ only in the checksum algorithm used: MD5 for Files, SHA-1 for Checksums-Sha1 and SHA-256 for Checksums-Sha256.
The first line of the field value (the part on the same line as the field name followed by a colon) is always empty. The content of the field is expressed as continuation lines, one line per file. Each line consists of the checksum, a space, the file size, a space, and the file name. π
These fields list all files that make up the source package. The list of files in these fields must match the list of files in the other related fields. No skipping, no freeloading files, bestie.
Note: the MD5 and SHA-1 checksums are considered weak, and should never be assumed to be sufficient for secure verification. Like, do not trust them with your life, fr fr π
π BUGS π
The Format field conflates the format for the .dsc file itself and the format of the extracted source package. One field, two jobs, zero work-life balance π
π₯ SEE ALSO π₯
deb822(5), deb-src-control(5), deb-email(7), deb-version(7), dpkg-source(1).
Go read those too, iykyk π
Okay that's the whole page, bestie β brought to you by version 1.23.11-dirty, dated 2026-09-09 πβ¨ Thanks for reading, you ate that, no cap π
π¦ where this page comes from
- arch rolling: dpkg 1.23.11-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms