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.
Character |
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) |
glob |
$ |
${substvar} in debian/control and in debconf templates. |
shell, make |
[ ] |
Contains applicable architectures (in dependency fields) |
glob |
/ |
In apt command line, a way to specify the target release |
pathnames |
@ |
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) |
shell |
% |
In git tags of debian versions, substituted in place of : (by most tools; see DEP14) |
make |
{ } |
|
shell |
; |
|
shell |
? |
|
glob |
& |
|
shell |
" ' ` |
|
shell, C, etc. |
\ |
|
shell, C, make, etc. |
Other than as noted above, punctuation characters are not permitted in package names and version numbers.
