| .\" Includes text from the Debian Policy probably by Ian Jackson and others |
| .\" The copyright given below is that of the whole policy, but probably |
| .\" incomplete. |
| .\" Conversion to roff by Frank Lichtenheld |
| .TH deb\-version 5 "2011-08-14" "Debian Project" "Debian" |
| .SH NAME |
| deb\-version \- Debian package version number format |
| . |
| .SH SYNOPSIS |
| .RI "[" epoch "\fB:\fP]" upstream-version "[\fB\-\fP" debian-revision "]" |
| .SH DESCRIPTION |
| Version numbers as used for Debian binary and source packages |
| consist of three components. These are: |
| .TP |
| .I epoch |
| This is a single (generally small) unsigned integer. It |
| may be omitted, in which case zero is assumed. If it is |
| omitted then the \fIupstream-version\fP may not |
| contain any colons. |
| .IP |
| It is provided to allow mistakes in the version numbers |
| of older versions of a package, and also a package's |
| previous version numbering schemes, to be left behind. |
| .TP |
| .I upstream-version |
| This is the main part of the version number. It is |
| usually the version number of the original ("upstream") |
| package from which the \fI.deb\fP file has been made, |
| if this is applicable. Usually this will be in the same |
| format as that specified by the upstream author(s); |
| however, it may need to be reformatted to fit into the |
| package management system's format and comparison |
| scheme. |
| .IP |
| The comparison behavior of the package management system |
| with respect to the \fIupstream-version\fP is |
| described below. The \fIupstream-version\fP |
| portion of the version number is mandatory. |
| .IP |
| The \fIupstream-version\fP may contain only |
| alphanumerics ("A-Za-z0-9") and the characters |
| .BR . " " + " " \- " " : " " ~ |
| (full stop, plus, hyphen, colon, tilde) and should |
| start with a digit. If there is no |
| \fIdebian-revision\fP then hyphens are not allowed; |
| if there is no \fIepoch\fP then colons are not |
| allowed. |
| .TP |
| .I debian-revision |
| This part of the version number specifies the version of |
| the Debian package based on the upstream version. It |
| may contain only alphanumerics and the characters |
| .BR + " " . " " ~ |
| (plus, full stop, tilde) and is |
| compared in the same way as the |
| \fIupstream-version\fP is. |
| .IP |
| It is optional; if it isn't present then the |
| \fIupstream-version\fP may not contain a hyphen. |
| This format represents the case where a piece of |
| software was written specifically to be turned into a |
| Debian package, and so there is only one "debianisation" |
| of it and therefore no revision indication is required. |
| .IP |
| It is conventional to restart the |
| \fIdebian-revision\fP at '1' each time time the |
| \fIupstream-version\fP is increased. |
| .IP |
| Dpkg will break the version |
| number apart at the last hyphen in the string (if there |
| is one) to determine the \fIupstream-version\fP and |
| \fIdebian-revision\fP. The absence of a |
| \fIdebian-revision\fP compares earlier than the |
| presence of one (but note that the \fIdebian-revision\fP |
| is the least significant part of the version number). |
| .SS Sorting Algorithm |
| The \fIupstream-version\fP and \fIdebian-revision\fP |
| parts are compared by the package management system using the |
| same algorithm: |
| .PP |
| The strings are compared from left to right. |
| .PP |
| First the initial part of each string consisting entirely of |
| non-digit characters is determined. These two parts (one of |
| which may be empty) are compared lexically. If a difference |
| is found it is returned. The lexical comparison is a |
| comparison of ASCII values modified so that all the letters |
| sort earlier than all the non-letters and so that a tilde |
| sorts before anything, even the end of a part. For example, |
| the following parts are in sorted order: '~~', '~~a', '~', |
| the empty part, 'a'. |
| .PP |
| Then the initial part of the remainder of each string which |
| consists entirely of digit characters is determined. The |
| numerical values of these two parts are compared, and any |
| difference found is returned as the result of the comparison. |
| For these purposes an empty string (which can only occur at |
| the end of one or both version strings being compared) counts |
| as zero. |
| .PP |
| These two steps (comparing and removing initial non-digit |
| strings and initial digit strings) are repeated until a |
| difference is found or both strings are exhausted. |
| .PP |
| Note that the purpose of epochs is to allow us to leave behind |
| mistakes in version numbering, and to cope with situations |
| where the version numbering scheme changes. It is |
| \fBnot\fP intended to cope with version numbers containing |
| strings of letters which the package management system cannot |
| interpret (such as 'ALPHA' or 'pre\-'), or with |
| silly orderings. |
| .SH CAVEATS |
| The tilde character and its special sorting properties were introduced |
| in dpkg, version 1.10 and some parts of dpkg\-dev only gained |
| support for it later in the 1.10.x series. |
| .SH SEE ALSO |
| .BR deb\-control (5), |
| .BR deb (5), |
| .BR dpkg (1) |
| .SH AUTHORS |
| Copyright \(co 1996,1997,1998 Ian Jackson and Christian Schwarz |
| .br |
| Copyright \(co 2007 Frank Lichtenheld |
| .sp |
| This is free software; see the GNU General Public Licence version 2 or later |
| for copying conditions. There is NO WARRANTY. |