table of contents
- unstable 4.29.1-1
| RPM-VERSION(7) | Miscellaneous Information Manual | RPM-VERSION(7) |
NAMN¶
rpm-version — RPM:s versionssystem
SYNOPSIS¶
[EPOK:]VERSION[-UTGÅVA]
BESKRIVNING¶
En etikett känd som EVR används för att referera till programvaruversioner i RPM och består av upp till tre komponenter:
- VERSION avspeglar den faktiska versionen av den paketerade programvaran.
- UTGÅVA reflekterar paketeringsrevisioner inom den programvaruversionen.
- EPOK är ett artificiellt åsidosättande som gör det möjligt att gå runt anomalier i versioneringen.
Endast komponenten VERSION är obligatorisk i en EVR-etikett. Alla RPM-paket har dock en VERSION och en UTGÅVA.
Version¶
VERSIONssträngen avspeglar den faktiska versionen av den paketerade programvaran.
Strängen består av alfanumeriska ASCII-tecken, eventuellt avdelade med separatorerna punkt (.), understrykningstecken (_) och plustecknet (+), samt operatorerna tilde (~) och cirkumflex (^).
Operatorerna används för att avbilda versionssträngar före och efter utgåvor till en koherent uppgradering.
Särskilt kan tecknet bindestreck (-) INTE användas i VERSION eller UTGÅVA eftersom det är komponentseparatorn.
Utgåva¶
UTGÅVAN avspeglar en revision inom en enda programvaruversion. Idealt är UTGÅVA ett enkelt heltal som ökas närhelst ändringar görs av ett paket, och skall återställas (till 1) närhelst programvaruversionen ändras.
Tektiskt är formatet exakt samma som för VERSION.
Epok¶
EPOKEN är ett ickenegativt heltal, separat från versionen med ett kolon (:). Det är den mest signifikanta delen av en EVR som vrider versionsjämförelsen så att en äldre version förefaller nyare. Den är ibland nödvändig för att gå runt versionsanomalier såsom att ett programvaruprojekt ändrar sin versioneringsmetod, men även paketeringsmisstag.
En utelämnad EPOK har det implicita värdet noll.
Epoken skall bara användas som en sista utväg. Den bryter principen om minsta möjliga förvåning, och att ändra den kräver att alla relaterade versionerade beroenden i andra paket uppdateras på motsvarande sätt.
Jämförelse¶
Två EVRer jämförs från vänster till höger, en komponent åt gången. Komponenterna jämförs från vänster till höger, ett segment åt gången. Jämförelsen slutar så fort som ett segment eller en komponentnivå skiljer, så om t.ex. epoken skiljer beaktas inte resten av EVRen alls.
Inom komponenter utgör konsekutiva alfabetiska tecken och konsekutiva siffror implicita segment. Explicita segment markeras med separatorer och operatorer. Numeriska segment jämförs numeriskt som heltal där inledande nollor ignoreras, annars används lexikografisk jämförelse. Det vill säga, abc123 består av två segment: abc och 123 och är lika med abc0123, abc.123 och abc.000123 trots att de ser olika ut.
Numeriska segment anses nyare än alfanumeriska segment oavsett det faktiska innehållet. När de är i övrigt lika betraktas komponenten med fler segment som nyare, på samma sätt som en EVR med fler komponenter betraktas som nyare. Till exempel är 0.0 nyare än 0 och 1.xyz är äldre än 1.0 men nyare än 1.
Tecknen som utgör segmentseparator jämförs inte, så de kan användas utbytbart, och flera på varandra följande separatorer hanteras som om endast en separator användes. Alltså är 1.0 lika med 1+0 och 1+.+0.
Tildeoperatorer får ett segment att sorteras som äldre, och används till förhandsutgåveversioner. Till exempel är 2.0~beta1 äldre än 2.0 eller 2.0~rc1, och nyare än 1.0. Operatorn cirkumflex är väsentligen motsatsen till tilde. Den får ett segment att sorteras som nyare, och används för ögonblicksbilder efter utgåvan som finns mellan faktiska utgåvor av programvara. Till exampel är 2.0^150825 nyare än 2.0 men äldre än 2.0.1.
EXEMPEL¶
123
1.0.1
2.60.1-1
1.0-5
5:3.0-1
1.0~beta2
2.0^20250611
FEL¶
Olika inte uppenbara beteenden och mörka hörn finns inom algoritmen för jämförelse av versioner, men är svåra att åtgärda på grund av hög risk att förstöra för befintliga paket:
- Icke-ASCII tecken ignoreras och är därmed lika: 1.1.α är lika med 1.1.β och till och med 1.1.ββ. rpmbuild(1) tillåter inte sådanda EVR:er men det är möjligt att påträffa ”otillåtna” värden via API-användning, väldigt gamla paket och paket som skapats med tredjepartsverktyg.
- Implicita segment kan vara vilseledande: 1.f är nyare än 1c.f. Resultatet blir mer uppenbart genom att göra segmenten explicita: 1.f är nyare än 1.c.f eftersom segmenten jämförs ett och ett, och c sorterar lägre än f lexikografiskt.
ÖVERSÄTTNING¶
Den svenska översättningen av denna manualsida skapades av Göran Uddeborg <goeran@uddeborg.se>
Denna översättning är fri dokumentation; läs GNU General Public License Version 3 eller senare för upphovsrättsvillkor. Vi tar INGET ANSVAR.
Om du hittar fel i översättningen av denna manualsida, skicka ett mail till Tp-sv@listor.tp-sv.se.
| 7 november 2025 | RPM 6.0.0 |