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

       deb-version - Debian package version number format


       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.

              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

              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.

              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

              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,

       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

       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.

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

1.19.7                            2022-05-25                    deb-version(7)
Man Pages Copyright Respective Owners. Site Copyright (C) 1994 - 2023 Hurricane Electric. All Rights Reserved.