Punctuation characters in Debian packages, versions, dependencies, etc.

Debian's systems for handling packages and their metadata use a variety of punctuation characters. This page is an attempt to list the uses and meanings. The list is roughly sorted from least to most obscure.


Use in Debian packaging

Other important uses

+ .

Literal in package names and version numbers. Introduces type/extension(s) in filenames. + in apt command lines mean adding a package


Literal in package names, architectures, suite names and RFC822 field names. Last - separates the Debian revision in version numbers. In filename extensions, used to introduce sub-tarball-name for orig tarballs. In apt command line means removing/not-installing a package.


List separator (notably, in Dependency fields)


Separates components in (semi-)parseable filenames and buildd/wanna-build. In debconf templates, as the first character of a field name, indicates that the value is translatable. In git tags of debian versions, substituted in place of ~ (and also in place of : by some tools which do not comply with DEP-14).


Delimits epoch (at start of version numbers; but not found in filenames). Introduces architecture (after package names). Field name terminator in RFC822 syntax files. Scoping literal in substvar names

ssh, make, etc.


Literal in version numbers, with unusual early sorting

( )

Contains version specification (in dependency fields)

shell, make

< >

Version number inequalities (as part of <= << etc. inside ( ) in dependency fields). Contains build profile specification (in dependency fields).

shell, email


Version number equality (in dependency fields inside ( ), and following package name on apt command line)


Negation (in architecture and build profile lists)

shell history


Wildcard (in architecture specifications, but not permitted everywhere)



${substvar} in debian/control and in debconf templates.

shell, make

[ ]

Contains applicable architectures (in dependency fields)



In apt command line, a way to specify the target release



Indicates "the same package" (in debian/tests/control)

email, ssh, make


Specifies that previous name was a task, not package, name (in apt-get and other libapt-pkg users)

some shells


Comment introduction (starts of lines). In git tags of abstruse debian versions, inserted after some dots (by most tools; see DEP-14)


Alternative separator (notably, in Dependency fields)



In git tags of debian versions, substituted in place of : (by most tools; see DEP14)


{ }








" ' `

shell, C, etc.


shell, C, make, etc.

Other than as noted above, punctuation characters are not permitted in package names and version numbers.