dwww Home | Manual pages | Find package

deb-version(7)                     dpkg suite                    deb-version(7)

NAME
       deb-version - Debian package version number format

SYNOPSIS
       [epoch:]upstream-version[-debian-revision]

DESCRIPTION
       Version numbers as used for Debian binary and source packages consist of
       three components.  These are:

       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
           upstream-version may not contain any colons.

           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.

       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
           .deb  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.

           The comparison  behavior  of  the  package  management  system  with
           respect  to  the upstream-version is described below.  The upstream-
           version portion of the version number is mandatory.

           The upstream-version may contain  only  alphanumerics  (“A-Za-z0-9”)
           and the characters . + - : ~ (full stop, plus, hyphen, colon, tilde)
           and  should start with a digit.  If there is no debian-revision then
           hyphens are not allowed; if there is no epoch then  colons  are  not
           allowed.

       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 + . ~ (plus, full stop, tilde) and
           is compared in the same way as the upstream-version is.

           It is optional; if it isn't present then  the  upstream-version  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  “debianization”  of  it  and
           therefore no revision indication is required.

           It  is  conventional to restart the debian-revision at ‘1’ each time
           the upstream-version is increased.

           Dpkg will break the version number apart at the last hyphen  in  the
           string  (if  there  is  one)  to  determine the upstream-version and
           debian-revision.  The absence of a debian-revision compares  earlier
           than  the  presence of one (but note that the debian-revision is the
           least significant part of the version number).

   Sorting algorithm
       The upstream-version and  debian-revision  parts  are  compared  by  the
       package management system using the same algorithm:

       The strings are compared from left to right.

       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’.

       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.

       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.

       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  not  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.

NOTES
       The tilde character and its special sorting properties  were  introduced
       in  dpkg  1.10  and  some  parts  of  the dpkg build scripts only gained
       support for it later in the 1.10.x series.

SEE ALSO
       deb-control(5), deb(5), dpkg(1)

1.22.21                            2025-06-30                    deb-version(7)

Generated by dwww version 1.16 on Tue Dec 16 04:52:50 CET 2025.