]> err.no Git - dpkg/commitdiff
deb-version.5: Add an own manpage for Dpkg's version format
authorFrank Lichtenheld <djpig@debian.org>
Sat, 6 Oct 2007 15:43:45 +0000 (17:43 +0200)
committerFrank Lichtenheld <djpig@debian.org>
Thu, 29 Nov 2007 21:58:03 +0000 (22:58 +0100)
Mostly stolen from policy, which is probably as good as it
gets... Only reformatted the text to roff and added the
tilde patch from #382612

debian/changelog
man/ChangeLog
man/deb-control.5
man/deb-version.5 [new file with mode: 0644]

index 5e73d797a29e41d448e72e205af488927c02c8ad..8aadeaedf9d94537170ae67779a07e26f00d1b2a 100644 (file)
@@ -1,6 +1,8 @@
 dpkg (1.14.13) UNRELEASED; urgency=low
 
-  *
+  [ Frank Lichtenheld ]
+  * Add an own manpage for Dpkg's version format. Mostly stolen
+    from policy. Closes: #373003
 
  -- Guillem Jover <guillem@debian.org>  Thu, 29 Nov 2007 07:08:35 +0200
 
index 612216b8dc229d79a3cc1b58d8562b8c96222699..38e6b6a8a0ab865605099f2253345109cab518ae 100644 (file)
@@ -1,3 +1,12 @@
+2007-11-29  Frank Lichtenheld  <djpig@debian.org>
+
+       * deb-control.5: Move description of
+       version format to...
+       * deb-version.5: Take the section from
+       policy describing version format and
+       sorting since this is probably as good
+       as it gets for describing these.
+
 2007-11-29  Guillem Jover  <guillem@debian.org>
 
        * po/dpkg-man.pot: Regenerated.
index 3802d07fdddf8700fbf1569102fa9589c7aa1ee1..185128dbd8890c5fc16e5feca0a8253649d9cdae 100644 (file)
@@ -31,9 +31,9 @@ generate file names by most installation tools.
 .BR Version: " <version string>"
 Typically, this is the original package's version number in whatever form
 the program's author uses. It may also include a Debian revision number
-(for non-native packages). If both version and revision are supplied,
-they are separated by a hyphen, `-'. For this reason, the original version
-may not have a hyphen in its version number.
+(for non-native packages). The exact format and sorting algorithm
+are described in
+.BR deb-version (5).
 .TP
 .BR Maintainer: " <fullname email>"
 Should be in the format `Joe Bloggs <jbloggs@foo.com>', and is typically
@@ -226,6 +226,7 @@ Description: GNU grep, egrep and fgrep.
 .
 .SH SEE ALSO
 .BR deb (5),
+.BR deb-version (5),
 .BR debtags (1),
 .BR dpkg (1),
 .BR dpkg-deb (1).
diff --git a/man/deb-version.5 b/man/deb-version.5
new file mode 100644 (file)
index 0000000..0b3b86b
--- /dev/null
@@ -0,0 +1,128 @@
+.\" 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 "2007-10-06" "Debian Project" "Debian"
+.SH NAME
+deb\-version \- Debian package version number format
+.
+.SH SYNOPSIS
+.RI "[ " epoch ":] " upstream_version " [\-" 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 © 1996,1997,1998 Ian Jackson and Christian Schwarz.
+.br
+Copyright © 2007 Frank Lichtenheld
+.sp
+This manual is free software; you may redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any later
+version.