NAMN¶
deb-version - Format på versionsnummer för Debianpaket
SYNOPS¶
[
epok:]
uppströmsversion[
-debianuppdatering]
BESKRIVNING¶
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).
Sorteringsalgoritm¶
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.
VARNINGAR¶
Tildetecknets och dess speciella sorteringsegenskaper introducerades i dpkg
version 1.10 och vissa delar av dpkg-dev fick inte stöd för det
förrän senare i 1.10.x-serien.
SE ÄVEN¶
deb-control(5),
deb(5),
dpkg(1)
ÖVERSÄTTNING¶
Peter Krefting och Daniel Nylander.