convenção de versão dos pacotes debian

35

Estou usando o debian / Ubuntu e fico confuso sobre as versões dos pacotes. Ao usar o dpkg -lcomando, recebo:

ii  vim                                 2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor
ii  vim-common                          2:7.3.429-2ubuntu2.1                Vi IMproved - Common files
ii  vim-runtime                         2:7.3.429-2ubuntu2.1                Vi IMproved - Runtime files
ii  vim-tiny                            2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor - compact version
ii  virt-what                           1.11-1                              detect if we are running in a virtual machine
ii  w3m                                 0.5.3-5ubuntu1                      WWW browsable pager with excellent tables/frames support
ii  watershed                           6                                   reduce superfluous executions of idempotent command
ii  wget                                1.13.4-2ubuntu1                     retrieves files from the web
ii  whiptail                            0.52.11-2ubuntu10                   Displays user-friendly dialog boxes from shell scripts
ii  whoopsie                            0.1.33                              Ubuntu crash database submission daemon
ii  wimlib9                             1.5.0-1~webupd8~precise             Library to extract, create, modify, and mount WIM files
ii  wimtools                            1.5.0-1~webupd8~precise             Tools to extract, create, modify, and mount WIM files
ii  wireless-tools                      30~pre9-5ubuntu2                    Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                       0.7.3-6ubuntu2.1                    client support for WPA and WPA2 (IEEE 802.11i)
ii  x11-common                          1:7.6+12ubuntu2                     X Window System (X.Org) infrastructure
ii  x11-utils                           7.6+4ubuntu0.1                      X11 utilities
ii  xauth                               1:1.0.6-1                           X authentication utility
ii  xbitmaps                            1.1.1-1                             Base X bitmaps
ii  xclip                               0.12-1                              command line interface to X selections
ii  xfonts-encodings                    1:1.0.4-1ubuntu1                    Encodings for X.Org fonts
ii  xfonts-utils                        1:7.6+1                             X Window System font utility programs
ii  xkb-data                            2.5-1ubuntu1.3                      X Keyboard Extension (XKB) configuration data
ii  xml-core                            0.13                                XML infrastructure and XML catalog file support
rc  xpdf                                3.02-21build1                       Portable Document Format (PDF) reader
ii  xterm                               271-1ubuntu2.1                      X terminal emulator
ii  xz-lzma                             5.1.1alpha+20110809-3               XZ-format compression utilities - compatibility commands
ii  xz-utils                            5.1.1alpha+20110809-3               XZ-format compression utilities
ii  zabbix-agent                        1:1.8.11-1                          network monitoring solution - agent
ii  zlib1g                              1:1.2.3.4.dfsg-3ubuntu4             compression library - runtime
ii  zlib1g-dev                          1:1.2.3.4.dfsg-3ubuntu4             compression library - development
ii  zsh                                 4.3.17-1ubuntu1                     shell with lots of features

A terceira coluna é version, mas está tudo "bagunçado" de uma maneira que não consigo entender. Quero dizer, pacotes diferentes usam especificações de nomes totalmente diferentes.

Aqui estão as principais perguntas:

  1. Por que alguns números de versão têm ubuntuneles e outros não?
  2. O que significa toda a pontuação especial -~+?
  3. Quais são alpha, builde dfsg? Posso apenas usá-los casualmente?
  4. vime outros pacotes têm 2:. O que isso significa?
  5. Como a "comparação de versões" funciona, quando os formatos das versões podem ser tão diferentes?

Alguém por favor pode me explicar isso? Ou onde posso encontrar um documento oficial?

Desde já, obrigado.

cizixs
fonte
O que você quer dizer com: "Por que existem ubuntu neles e não existem?"
Ciro Santilli escreveu
11
@ CiroSantilli709 法轮功 抓捕 六四 事件 法轮功 ou seja, por que alguns números de versão têm um sufixo que contém a palavra ubuntue outros não.
rakslice

Respostas:

50

O Manual de Políticas Debian tem isso a dizer sobre o campo da versão, que responde a algumas partes da sua pergunta:

Formato

O formato é: [epoch:]upstream_version[-debian_revision]

Os três componentes aqui são:

época

Este é um único inteiro não assinado (geralmente pequeno). Pode ser omitido, caso em que zero é assumido. Se for omitido, a versão upstream poderá não conter dois pontos. Ele é 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.

upstream_version

Esta é a parte principal do número da versão. Geralmente, é o número da versão do pacote original ("upstream") do qual o arquivo .deb foi criado, se aplicável. Normalmente, isso estará no mesmo formato especificado pelo (s) autor (es) upstream (s); no entanto, pode ser necessário reformatá-lo para se ajustar ao formato e ao esquema de comparação do sistema de gerenciamento de pacotes.

O comportamento de comparação do sistema de gerenciamento de pacotes em relação ao upstream_version é descrito abaixo. A parte upstream_version do número da versão é obrigatória.

A versão upstream pode conter apenas alfanuméricos [36] e os caracteres "."(ponto final), "+"(mais), "-"(hífen), ":"(dois pontos), "~"(til) e deve começar com um dígito. Se não houver debian_revision , hífens não serão permitidos; se não houver época , os dois pontos não serão permitidos.

debian_revision

Esta parte do número da versão especifica a versão do pacote Debian com base na versão upstream. Ele pode conter apenas alfanuméricos e os caracteres "."(ponto final), "+"(mais), "~"(til) e é comparado da mesma maneira que a versão upstream .

É opcional; se não estiver presente, a versão upstream poderá não conter um hífen. Este formato representa o caso em que um software foi escrito especificamente para ser um pacote Debian, onde a fonte do pacote Debian deve sempre ser idêntica à fonte original e, portanto, nenhuma indicação de revisão é necessária.

É convencional reiniciar o debian_revision em 1 sempre que a versão upstream for aumentada.

O sistema de gerenciamento de pacotes dividirá o número da versão no último hífen da cadeia (se houver) para determinar a versão upstream e a debian_revision . A ausência de uma debian_revision é equivalente a uma debian_revision de 0.

Comparação

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 depois debian_revision se upstream_version também for igual. época é comparada numericamente. As partes upstream_version e debian_revision são comparadas pelo sistema de gerenciamento de pacotes usando o seguinte algoritmo:

As strings são comparadas da esquerda para a direita.

Primeiro, a parte inicial de cada sequência que consiste inteiramente de caracteres que não são dígitos. Essas duas partes (uma das quais pode estar vazia) são comparadas lexicamente. Se uma diferença for encontrada, ela será retornada. A comparação lexical é uma comparação dos valores ASCII modificados para que todas as letras sejam classificadas antes de todas as não-letras e para que um til classifique antes de qualquer coisa, até o final de uma peça. Por exemplo, as seguintes peças estão em ordem de classificação desde a primeira à última: ~~, ~~a, ~, a parte vazia, a.

Em seguida, é determinada a parte inicial do restante de cada string, que consiste inteiramente em caracteres digitados. Os valores numéricos dessas duas partes são comparados e qualquer diferença encontrada é retornada como resultado da comparação. Para esses propósitos, uma sequência vazia (que pode ocorrer apenas no final de uma ou das duas sequências de versão sendo comparadas) conta como zero.

Essas duas etapas (comparação e remoção de cadeias iniciais sem dígito e de dígitos iniciais) são repetidas até que uma diferença seja encontrada ou ambas as cadeias estejam esgotadas.

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 se destina a lidar com números de versão que contêm sequências de letras que o sistema de gerenciamento de pacotes não pode interpretar (como ALPHAou pre-) ou com pedidos tolos.

ubuntuindicará que o pacote foi construído especificamente para o Ubuntu. As strings alphae buildparecem não ter nenhum significado em particular, mas dfsgse referem a um pacote que foi modificado para conformidade com as Diretrizes Debian de Software Livre .

Flup
fonte
11
Obrigado, isso ajuda muito. Mas como funciona a comparação de versões? dígitos, letras e ~ +, o que vem primeiro e o último?
cizixs
Expandi a citação na minha resposta para incluir a seção do manual que descreve o comportamento da comparação.
Flup
2
Existe uma ferramenta online em algum lugar onde eu possa testar como essas seqüências de versão são classificadas?
Nick
Você poderia colar os mesmos exemplos? Por exemplo, analisando algumas das versões acima nas partes separadas. Se a versão upstream e a versão debian podem conter - e + como sabemos onde está a separação? Além disso, o primeiro link parece estar quebrado.
precisa saber é
@fersarr Vou deixar exemplos para outras pessoas, mas consertei o link.
Flup
10

XubuntuY parte da versão, por exemplo, 1ubuntu1

  • Xé a versão do pacote Debian. A maioria dos pacotes Ubuntu é baseada em pacotes Debian, que é uma distribuição "upstream".

    Se 0isso significa que não há pacote Debian: ele existe apenas no Ubuntu.

    X redefine quando a versão real do upstream é atualizada, por exemplo, Binutils 2.25 a Binutils 2.26.

    As versões Debian existem porque o Debian pode fazer correções nos pacotes para que funcionem melhor no sistema Debian ou em versões de segurança.

    É claro que os desenvolvedores Debian estão interessados ​​em mesclar patches para evitar bifurcação.

    Sempre que um novo conjunto de patches é feito, esse número aumenta.

  • ubuntuY é opcional.

    Se não estiver presente, significa que o pacote Debian foi usado diretamente.

    Caso contrário, isso significa que este é o Yth patch do Ubuntu aplicado sobre um patch Debian, assim como o Debian se aplica sobre o real upstream.

    Yredefine quando Xaumenta.

Se você obtiver a fonte de um pacote com:

apt-get source gdb

você verá os patches aplicados pelo Ubuntu e Debian em:

debian/patches/

Ainda mais interessante, você pode clonar bzre ver uma lista de todas as versões do Ubuntu com o que mudou entre elas:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Veja também: https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

O que a época realmente representa

https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-the-front-of-their-version-string

Ciro Santilli adicionou uma nova foto
fonte