Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
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 number-
	    ing schemes, to be left behind.

     upstream-version
	    This is the main part of the version number.  It is usually the ver-
	    sion 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);  how-
	    ever,  it may need to be reformatted to fit into the package manage-
	    ment system's format and comparison scheme.

	    The comparison behavior of the package management  system  with  re-
	    spect  to the upstream-version is described below. The upstream-ver-
	    sion 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 alphanu-
	    merics and the characters + . ~ (plus, full stop, tilde) and is com-
	    pared 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  there-
	    fore 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 de-
	    bian-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 any-
     thing, 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 en-
     tirely 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  oc-
     cur  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  ini-
     tial  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.19.8				   2022-05-24			  deb-version(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=deb-version&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help