Warum haben einige Pakete zusätzliche Nummern vor einem Doppelpunkt an der Vorderseite ihrer Versionszeichenfolge?

29

Ich habe gerade bemerkt, dass Wine (und eine Reihe anderer Pakete) ihr Versionsschema auf so etwas wie Folgendes verschoben haben:

1:1.6.2-0ubuntu3

Ich verstehe alles nach dem 1:... Aber worauf bezieht 1:sich das?

Es scheint nicht die Hauptversion zu spiegeln. Wenn Sie sich eine Liste der ausstehenden Upgrades ansehen, gibt es Versionen wie: 2:4.1.3...und es gibt viele Pakete ohne #:Präfix.

Was ist los?

Oli
quelle
es scheint Ubuntu-spezifisch zu sein, packages.debian.org/sid/wine hat dieses Präfix nicht
Sylvain Pineau
Es ist auch neu für Wine in Ubuntu (ab 14.04), aber andere Pakete wie python3-uno( in Ubuntu und in Debian ) haben das Präfix konsistent.
Oli
In der Tat habe ich die Antwort auf Superuser
Sylvain Pineau
@Oli Es ist nicht neu für Wein, es war immer da, aber da sein Wert die 0ganze Zeit bis zum 14.04 war, wurde es weggelassen, um in die Versionszeichenfolge geschrieben zu werden. Sie können also an all diese vielen Pakete#: denken, ohne das Präfix, das sie tatsächlich enthalten 0:. Sehen Sie die Antworten, die Sie erhalten haben, um sie besser zu verstehen.
Radu Rădeanu

Antworten:

26

Von man deb-version:

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.

Diese zusätzliche Zahl (in Ihrem Fall 1) bezieht sich also auf die Epochen- Komponente, die weggelassen werden kann. In diesem Fall wird 0 angenommen . Wenn Sie also eine Versionszeichenfolge sehen, die so aussieht 1.6.2-0ubuntu3, können Sie denken, dass sie tatsächlich so aussieht 0:1.6.2-0ubuntu3. Wie ist das hilfreich und wie funktioniert es? Es wird bereitgestellt, um Fehler in den Versionsnummern älterer Versionen eines Pakets sowie in den früheren Versionsnummernschemata eines Pakets zu vermeiden . Um dies besser zu verstehen, schauen Sie sich die folgenden erklärenden Absätze des Debian-Richtlinienhandbuchs - Steuerdateien und ihre Felder genauer an :

Wenn zwei Versionsnummern verglichen werden, wird zuerst die Epoche jeder verglichen, dann die Upstream_Version, wenn die Epoche gleich ist, und dann die Debian_Version, wenn die Upstream_Version ebenfalls gleich ist. Epoche wird numerisch verglichen.

Und:

Beachten Sie, dass der Zweck von Epochen darin besteht, Fehler bei der Versionsnummerierung zu vermeiden und Situationen zu bewältigen, in denen sich das Versionsnummerierungsschema ändert. Es ist nicht vorgesehen, mit Versionsnummern umzugehen, die Buchstabenfolgen enthalten, die das Paketverwaltungssystem nicht interpretieren kann (wie z. B. ALPHAoder pre-), oder mit dummen Ordnungen.

Radu Rădeanu
quelle
14

Dies ist die Epoche. Die Version wird überschrieben, wenn festgestellt wird, welches der beiden Pakete neuer ist:

Von der deb-versionManpage:

   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.

Quelle

Sylvain Pineau
quelle