Por que alguns pacotes têm números extras antes de dois pontos na frente da string de versão?

29

Acabei de notar que o Wine (e vários outros pacotes) mudaram seu esquema de versão para algo como:

1:1.6.2-0ubuntu3

Eu entendo tudo depois do 1:... Mas a que se 1:refere?

Parece não refletir a versão principal. Olhando para uma lista de atualizações pendentes, existem versões como: 2:4.1.3...e há muitos pacotes sem o #:prefixo.

O que está acontecendo?

Oli
fonte
parece ser Ubuntu específico, packages.debian.org/sid/wine não tem esse prefixo
Sylvain Pineau
Também é novo para o Wine no Ubuntu (a partir do 14.04), mas outros pacotes como python3-uno( no Ubuntu e no Debian ) têm o prefixo de forma consistente.
Oli
Na verdade, eu encontrei a resposta sobre superusuário
Sylvain Pineau
@Oli É não nova para o vinho, ele estava sempre lá, mas porque o seu valor era 0o tempo todo, até 14,04, foi omitida a ser escrito na cadeia de versão. Portanto, você pode pensar em todos esses pacotes sem o #:prefixo, pois eles contêm de fato 0:. Veja as respostas que você recebeu para entender melhor.
Radu Rădeanu

Respostas:

26

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

Portanto, esse número extra (no seu caso 1) refere-se ao componente da época que pode ser omitido, caso em que 0 é assumido . E assim, se você vir uma string de versão que parece que 1.6.2-0ubuntu3você pode pensar que de fato parece 0:1.6.2-0ubuntu3. Como isso é útil e como isso ocorre: É fornecido para permitir que erros nos números de versão de versões mais antigas de um pacote e também nos esquemas de numeração de versões anteriores de um pacote sejam deixados para trás . Para entender melhor, dê uma olhada nos seguintes parágrafos explicativos do Debian Policy Manual - Arquivos de controle e seus campos :

Ao comparar dois números de versão, primeiro a época de cada uma é comparada, depois a upstream_version se a época for igual e, em seguida, debian_revision se upstream_version também for igual. época é comparada numericamente.

E:

Observe que o objetivo das épocas é permitir deixar para trás erros na numeração de versões e lidar com situações em que o esquema de numeração de versões muda. É não destina-se a lidar com os números de versão que contêm sequências de letras que o sistema de gestão de pacote não pode interpretar (tais como ALPHAou pre-), ou com ordenações parvo.

Radu Rădeanu
fonte
14

Esta é a época. Ele substitui a versão na determinação de qual dos dois pacotes é mais recente:

Na deb-versionpágina do manual:

   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.

Fonte

Sylvain Pineau
fonte