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.

The string consists of ASCII alphanumeric characters, optionally segmented with the separators period (.), underscore (_) and the plus sign (+), and operators tilde (~) and caret (^).

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.

Numeric segments are considered newer than alphabetic segments regardless of the actual content. When otherwise equal, the component with more segments is considered newer, and similarly an EVR with more components is considered newer. For example, 0.0 is newer than 0 and 1.xyz is older than 1.0 but newer than 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.

The tilde operator causes a segment to sort older, and is used for pre-release versions. For example 2.0~beta1 is older than 2.0 or 2.0~rc1, and newer than 1.0. The caret operator is essentially the opposite of tilde. It causes a segment to sort newer, and is used for post-release snapshots that exist between actual software releases. For example, 2.0^150825 is newer than 2.0 but older than 2.0.1.

EXEMPEL
123
    En enkel ensegmentsversion 123. Nyare än 99, äldre än 321.

1.0.1
    En segmenterad versionssträng 1.0.1, så som de ofta används i programvaruprojekt för att indikera major.minor.mikro-semantik. Nyare än 1.0, äldre än 1.0.2.

2.60.1-1
    Första utgåvan av version 2.60.1. Nyare än 2.0 eller 2.60, men äldre än 3.0.

1.0-5
    Femte utgåvan av version 1.0, nyare än 1.0 eller 1.0-1, äldre än 1.0.1.

5:3.0-1
    Första utgåvan av version 3.0, med epoken 5. Nyare än 6.0-1, eller 4:6.0-1, äldre än 5:3.1-1.

1.0~beta2
    Pre-release beta2 of version 1.0. Newer than 0.99 and 1.0~beta1, older than 1.0.

2.0^20250611
    Ögonblicksbild från 20250611 efter version 2.0. Nyare än 2.0, äldre än 2.0.1.

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.

rpm(8) rpmbuild(1) rpmsort(1)

http://www.rpm.org/

Ö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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.