convenzione versione pacchetti debian


35

Sto usando debian / Ubuntu e mi confondo sulle versioni dei pacchetti. Quando uso il dpkg -lcomando, ottengo:

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

La terza colonna è version, ma è tutto "incasinato" in un modo che non riesco a capire. Voglio dire, pacchetti diversi usano specifiche di denominazione totalmente diverse.

Ecco le domande principali:

  1. Perché alcuni numeri di versione contengono ubuntue altri no?
  2. Cosa significa tutta la punteggiatura speciale -~+?
  3. Che cosa sono alpha, builde dfsg? Posso semplicemente usarli casualmente?
  4. vime altri pacchetti hanno 2:. Cosa significa?
  5. Come funziona il "confronto di versioni", quando i formati di versione possono essere così diversi?

Qualcuno può spiegarmelo, per favore? O dove posso trovare un documento ufficiale?

Grazie in anticipo.


Cosa intendi con "Perché ci sono ubuntu in esse e non ci sono?"
Ciro Santilli 26 改造 中心 法轮功 六四 事件 il

1
@ CiroSantilli709 大 抓捕 六四 事件 法轮功 cioè perché alcuni numeri di versione hanno un suffisso contenente la parola ubuntue altri no.
rakslice,

Risposte:


50

Il Debian Policy Manual ha questo da dire sul campo della versione, che risponde ad alcune parti della tua domanda:

Formato

Il formato è: [epoch:]upstream_version[-debian_revision]

I tre componenti qui sono:

epoca

Questo è un singolo intero senza segno (generalmente piccolo). Può essere omesso, nel qual caso si assume zero. Se viene omesso, upstream_version potrebbe non contenere due punti. Viene fornito per consentire di lasciare indietro gli errori nei numeri di versione delle versioni precedenti di un pacchetto e anche gli schemi di numerazione delle versioni precedenti di un pacchetto.

upstream_version

Questa è la parte principale del numero di versione. Di solito è il numero di versione del pacchetto originale ("upstream") da cui è stato creato il file .deb, se applicabile. Di solito questo sarà nello stesso formato specificato dagli autori a monte; tuttavia, potrebbe essere necessario riformattarlo per adattarlo al formato e allo schema di confronto del sistema di gestione dei pacchetti.

Il comportamento di confronto del sistema di gestione dei pacchetti rispetto a upstream_version è descritto di seguito. La parte upstream_version del numero di versione è obbligatoria.

L'upstream_version può contenere solo caratteri alfanumerici [36] e dei personaggi "."(punto), "+"(più), "-"(trattino), ":"(colon), "~"(tilde) e deve iniziare con una cifra. Se non è presente debian_revision, i trattini non sono ammessi; se non c'è epoca, i due punti non sono ammessi.

debian_revision

Questa parte del numero di versione specifica la versione del pacchetto Debian basata sulla versione upstream. Può contenere solo caratteri alfanumerici e caratteri "."(punto), "+"(più), "~"(tilde) e viene confrontato allo stesso modo della versione upstream_ .

È facoltativo; se non è presente, upstream_version potrebbe non contenere un trattino. Questo formato rappresenta il caso in cui un pezzo di software è stato scritto specificamente per essere un pacchetto Debian, in cui l'origine del pacchetto Debian deve essere sempre identica alla fonte originaria e quindi non è richiesta alcuna indicazione di revisione.

È convenzionale riavviare debian_revision a 1 ogni volta che upstream_version viene aumentato.

Il sistema di gestione dei pacchetti suddividerà il numero di versione all'ultimo trattino nella stringa (se presente) per determinare upstream_version e debian_revision . L'assenza di una debian_revision equivale a una debian_revision di 0.

Confronto

Quando si confrontano due numeri di versione, vengono confrontate prima l'epoca di ciascuna, quindi upstream_version se l'epoca è uguale e quindi debian_revision se upstream_version è uguale. l'epoca viene confrontata numericamente. Le parti upstream_version e debian_revision vengono confrontate dal sistema di gestione dei pacchetti utilizzando il seguente algoritmo:

Le stringhe vengono confrontate da sinistra a destra.

Innanzitutto viene determinata la parte iniziale di ogni stringa costituita interamente da caratteri non numerici. Queste due parti (una delle quali può essere vuota) vengono confrontate lessicamente. Se viene rilevata una differenza, viene restituita. Il confronto lessicale è un confronto dei valori ASCII modificati in modo tale che tutte le lettere siano ordinate prima di tutte le non lettere e che una tilde sia ordinata prima di qualsiasi cosa, persino la fine di una parte. Ad esempio, le seguenti parti sono ordinati dalla prima all'ultima: ~~, ~~a, ~, la parte vuota, a.

Quindi viene determinata la parte iniziale del resto di ogni stringa che consiste interamente di caratteri numerici. I valori numerici di queste due parti vengono confrontati e qualsiasi differenza rilevata viene restituita come risultato del confronto. Per questi scopi una stringa vuota (che può verificarsi solo alla fine di una o entrambe le stringhe di versione confrontate) conta come zero.

Questi due passaggi (confronto e rimozione di stringhe iniziali non numeriche e stringhe iniziali iniziali) vengono ripetuti fino a quando non viene rilevata una differenza o entrambe le stringhe sono esaurite.

Si noti che lo scopo delle epoche è di permetterci di lasciare errori nella numerazione delle versioni e di far fronte a situazioni in cui cambia lo schema di numerazione delle versioni. Non ha lo scopo di far fronte a numeri di versione contenenti stringhe di lettere che il sistema di gestione dei pacchetti non può interpretare (come ALPHAo pre-) o con ordini stupidi.

ubuntuindicherà che il pacchetto è stato creato appositamente per Ubuntu. Le stringhe alphae buildnon sembrano avere alcun significato particolare, ma si dfsgriferiscono a un pacchetto che è stato modificato per renderlo conforme alle Linee guida del software libero Debian .


1
Grazie, questo aiuta molto. Ma come funziona il confronto delle versioni? cifre, lettere e ~ +, che viene prima e quale ultimo?
Cizix

Ho ampliato la citazione nella mia risposta per includere la sezione del manuale che descrive il comportamento del confronto.
Flup,

2
Esiste uno strumento online da qualche parte in cui posso verificare come vengono ordinate queste stringhe di versione?
Nick,

Potresti per favore incollare gli stessi esempi? Ad esempio, analizzando alcune delle versioni precedenti nelle parti separate. Se sia la versione upstream che la versione debian possono contenere - e + come facciamo a sapere dove si trova la separazione? Inoltre, il primo collegamento sembra essere rotto.
Fersarr,

@fersarr Lascio esempi ad altri ma ho corretto il link.
Flup,

10

XubuntuY parte della versione, ad esempio 1ubuntu1

  • Xè la versione del pacchetto Debian. La maggior parte dei pacchetti Ubuntu sono basati su pacchetti Debian, che è una distribuzione "upstream".

    Se 0questo significa che non esiste un pacchetto Debian: esiste solo in Ubuntu.

    X si ripristina quando viene aggiornata la versione reale a monte, ad esempio Binutils 2.25 a Binutils 2.26.

    Esistono versioni di Debian perché Debian può creare patch per i pacchetti in modo che funzionino meglio nel sistema Debian o per le versioni di sicurezza.

    Gli sviluppatori Debian sono ovviamente entusiasti di ricollegare le patch per evitare il fork.

    Ogni volta che viene creata una nuova serie di patch, questo numero aumenta.

  • ubuntuY è facoltativo.

    Se non presente, significa che il pacchetto Debian è stato usato direttamente.

    Altrimenti, significa che questa è la patch Yth Ubuntu applicata sopra una patch Debian, proprio come Debian si applica al di sopra del vero monte.

    Ysi ripristina quando Xaumenta.

Se ottieni la fonte di un pacchetto con:

apt-get source gdb

vedrai le patch applicate da Ubuntu e Debian su:

debian/patches/

Ancora più interessante, puoi clonare bzre vedere un elenco di tutte le versioni di Ubuntu con ciò che è cambiato tra loro:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Vedi anche: https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

Cosa rappresenta effettivamente l'epoca

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.