deb-version - Format på versionsnummer för Debianpaket
[
epok:]
uppströmsversion[
-debianuppdatering]
Versionsnummer som används för Debians binär- och
källkodspaket består av tre komponenter. De är:
- epok
- Ett ensamt (vanligtvis litet) heltalsvärde
större än noll. Det kan uteslutas, i så fall antas
det vara noll. Om det utesluts kan inte uppströmsversion
innehålla kolontecken.
Fältet är till för att rätta till fel i
versionsnummer i tidigare versioner av paketet, samt attr hantera
förändringar i paketets versionsnumreringssystem.
- uppströmsversion
- Detta är huvuddelen av versionsnumret. Det är
vanligtvis versionsnumret för originalpaketet
(”uppströmspaketet”) som .deb-filen skapats
från, om ett sådant finns. Normalt anges det på samma
form som används av
uppströmsförfattaren/författarna, men det kan
behöva formateras om för att passa med pakethanterarens
format och jämförelsefunktion.
Hur pakethanteraren jämför versionsnummer när det
gäller uppströmsversion beskrivs nedan. Fältet
uppströmsversion i versionsnumret kan inte utelämnas.
Fältet uppströmsversion kan endast innehålla
alfanumeriska tecken (”A-Za-z0-9”) och tecknen .
+ - : ~ (punkt, plus, bindestreck, kolon,
tilde) och bör inledas med en siffra. Om det inte finns
någon debianuppdatering tillåts inte bindestreck och
om det inte finns någon epok tillåts inte
kolontecken.
- debianuppdatering
- Denna del av versionsnumret anger versionen för
Debianpaketet som baserats på uppströmsversionen. Den kan
endast innehålla alfanumeriska tecken samt tecknen +
. ~ (plus, punkt, tilde) och jämförs på
samma sätt som uppströmsversion.
Fältet är valfritt - om det inte anges så kan inte
uppströmsversion innehålla något bindestreck.
I så fall anger versionsnumret att en programvara skrivits
specifikt för att göras till ett Debianpaket, och att det
då endast finns en ”debianisering” av det och att
därför behövs ingen uppdateringsinformation vid sidan
av.
Vanligtvis börjar debianuppdatering om på
”1” varje gång uppströmsversion
ökas.
Dpkg delar upp versionsnumret vid det sista bindestrecket i strängen
(om sådant finns) för att bestämma
uppströmsversion och debianuppdatering. Om
debianuppdatering saknas räknas det som tidigare än
om fältet existerar (men notera att debianuppdatering
är den minst signifikanta delen av versionsnumret).
Pakethanteringssystemet använder samma algoritm för att
jämföra
uppströmsversion- och
debianuppdatering-delarna:
Strängarna jämförs från vänster till
höger.
Först bestäms de inledande delar av varje sträng som enbart
består av tecken som inte är siffror. Dessa båda delar
(av vilka den ena kan vara tom) jämförs lexikalt. Om en skillnad
upptäcks returneras den. Den lexikala jämförelsen
jämför ASCII-värden, modifierad så att alla
bokstäver sorteras före alla icke-bokstäver och så
att ett tilde sorteras före allt, även i slutet av
delsträngen. Till exempel är följande delsträngar
sorterade: ”~~”, ”~~a”, ”~”, tomma
delsträngen, ”a”.
Därefter bestäms de inledande delar av varje sträng som
enbart består av siffror. De numeriska värdena av dessa delar
jämförs och om en skillnad upptäcks i
jämförelsen returneras den som resultat av
jämförelsen. För detta ändamål
räknas en tom sträng (vilket bara kan uppstå i slutet av
den ena eller båda versionssträngarna som jämförs)
som noll.
Dessa båda steg (jämföra och ta bort inledande
strängar med icke-siffror och siffror) upprepas till en
jämförelse upptäcks eller de båda
strängarna tar slut.
Observera att epokfältet är till för att kunna rätta
till tidigare misstag i versionsnumreringen, och att hantera situationer
där versionsnumreringsmetoden ändras. Det är
inte
tänkt att hantera versionsnummer som innehåller strängar
av bokstäver som pakethanteringssystemet inte kan tolka (till exempel
”ALPHA” eller ”Pre-”), eller dumma
sorteringsordningar.
Tildetecknets och dess speciella sorteringsegenskaper introducerades i dpkg 1.10
och vissa delar av dpkg-byggskripten fick inte stöd för det
förrän senare i 1.10.x-serien.
deb-control(5),
deb(5),
dpkg(1)
Peter Krefting och Daniel Nylander.