RPM-VERSION(7) Miscellaneous Information Manual RPM-VERSION(7) BEZEICHNUNG rpm-version - RPM-Versionssystem UBERSICHT [EPOCHE:]VERSION[-VEROFFENTLICHUNG] BESCHREIBUNG Die Bezeichnung EVR wird zur Bezeichnung von Softwareversionen in RPM verwendet und besteht aus bis zu drei Komponenten: o VERSION gibt die tatsachliche Version der paketierten Software an. o VEROFFENTLICHUNG gibt Paketrevisionen innerhalb dieser Softwareversion an. o Die EPOCHE ist eine kunstliche Ausserkraftsetzung, um Versionierungsanomalien zu umgehen. Nur die Komponente VERSION ist in einer EVR-Bezeichnung zwingend erforderlich. Jedoch haben alle RPM-Pakete eine VERSION und eine VEROFFENTLICHUNG. Version Die Zeichenkette VERSION gibt die tatsachliche Version der paketierten Software an. Diese Zeichenkette besteht aus alphanumerischen ASCII-Zeichen, die optional durch einen Punkt (.), einen Unterstrich (_) und das Plus-Zeichen (+) als Trenner sowie die Operatoren Tilde (~) und Caret (^) unterteilt sein konnen. Die Operatoren werden verwendet, um Zeichenketten von Vor- und Nachveroffentlichungsversionen in eine stimmige Aktualisierung abzubilden. Zu beachten ist, dass der Bindestrich (-) NICHT innerhalb von VERSION oder VEROFFENTLICHUNG verwendet werden darf, da er als Komponententrennzeichen dient. Veroffentlichung Die VEROFFENTLICHUNG spiegelt eine Revision innerhalb einer einzelnen Softwareversion wider. Idealerweise ist die VEROFFENTLICHUNG eine einfache Ganzzahl, die bei Anderungen an einem Paket erhoht wird und bei Anderungen der Softwareversion (auf 1) zuruckgesetzt werden sollte. Technisch betrachtet ist das Format exakt das selbe wie fur VERSION. Epoche Die EPOCHE ist eine nichtnegative Ganzzahl, die durch einen Doppelpunkt (:) von der Version getrennt ist. Es ist der wichtigste Teil eines EVR und korrigiert den Versionsvergleich dahingehend, dass eine altere Version neuer erscheint. Es ist manchmal notwendig, Versionsanomalien zu umgehen, z.B. wenn ein Softwareprojekt sein Versionsschema andert, aber auch um Paketierungsfehler zu korrigieren. Wenn die Angabe der EPOCHE weggelassen wird, wird diese implizit als 0 angenommen. Die Epoche sollte nur als eine Art >>letzter Ausweg<< angegeben werden. Eine solche Angabe verstosst gegen das Prinzip der geringsten Uberraschung, und eine Anderung erfordert die entsprechende Aktualisierung aller zugehorigen versionierten Abhangigkeiten in anderen Paketen. Vergleichen Zwei EVRs werden komponentenweise von links nach rechts verglichen. Die Komponenten werden segmentweise von links nach rechts verglichen. Der Vergleich wird beendet, sobald ein Unterschied auf Segment- oder Komponentenebene festgestellt wird. Wenn sich also beispielsweise schon die Angaben der Epoche unterscheiden, wird der Rest des EVR uberhaupt nicht berucksichtigt. Innerhalb von Komponenten bilden aufeinanderfolgende alphabetische Zeichen und aufeinanderfolgende Zahlen implizite Segmente. Explizite Segmente werden durch Trennzeichen und Operatoren gekennzeichnet. Numerische Segmente werden numerisch verglichen, als Ganzzahlen, wobei fuhrende Nullen ignoriert werden, andernfalls wird ein lexikografischer Vergleich verwendet. Das heisst, abc123 besteht aus zwei Segmenten: abc und 123 und ist trotz unterschiedlicher Darstellung gleich abc0123, abc.123 und abc.000123. Ungeachtet ihres tatsachlichen Inhalts werden numerische Segmente stets als neuer als alphabetische Segmente angesehen. Wenn sie ansonsten gleich sind, wird die Komponente mit mehr Segmenten als neuer angesehen, und analog dazu ist eine EVR-Angabe mit mehr Komponenten neuer. Zum Beispiel ist 0.0 neuer als 0 und 1.xyz alter als 1.0, aber neuer als 1. Die Zeichen des Segment-Trennzeichens werden nicht verglichen, so dass sie gegeneinander austauschbar verwendet werden konnen. Mehrere aufeinanderfolgende Trennzeichen werden so behandelt, als ob nur ein Trennzeichen verwendet wurde. Somit ist 1.0 gleich 1+0 und 1+.+0. Der Tilde-Operator, der fur Vorabversionen verwendet wird, bewirkt, dass ein Segment als alter einsortiert wird. Beispielsweise ist 2.0~beta1 alter als 2.0 oder2.0~rc1 und neuer als 1.0. Der Caret-Operator ist im Wesentlichen das Gegenteil der Tilde. Er bewirkt, dass ein Segment nach neueren Versionen sortiert wird und wird fur Nachveroffentlichungs-Schnappschusse verwendet, die zwischen aktuellen Software-Veroffentlichungen existieren. Beispielsweise ist 2.0^150825 neuer als 2.0, aber alter als 2.0.1. BEISPIELE 123 Eine einfache, nicht segmentierte Version 123. Neuer als 99, alter als 321. 1.0.1 Eine segmentierte Versionszeichenkette 1.0.1, wie sie haufig in Softwareprojekten verwendet wird, um die >>Haupt-.Neben-.Mikro<<-Semantik anzugeben. Neuer als 1.0, alter als 1.0.2. 2.60.1-1 Erste Veroffentlichung der Version 2.60.1. Neuer als 2.0 oder 2.60, aber alter als 3.0. 1.0-5 Funfte Veroffentlichung der Version 1.0, neuer als 1.0 oder 1.0-1, alter als 1.0.1. 5:3.0-1 Erste Veroffentlichung der Version 3.0, mit Epoche 5. Neuer als 6.0-1 oder 4:6.0-1, alter als 5:3.1-1. 1.0~beta2 Vorabveroffentlichung beta2 der Version 1.0. Neuer als 0.99 und 1.0~beta1, alter als 1.0. 2.0^20250611 Nachveroffentlichungs-Schnappschuss 20250611 der Version 2.0. Neuer als 2.0, alter als 2.0.1. FEHLER Der Algorithmus des Versionsvergleichs zeigt zuweilen unerwartetes Verhalten - und es gibt diverse >>dunkle Ecken<<. Diese sind jedoch schwierig zu adressieren, da ein hohes Risiko besteht, existierende Pakete zu beeintrachtigen: o Nicht-ASCII-Zeichen werden ignoriert und sind daher gleich: 1.1. ist gleich 1.1. und sogar 1.1.. rpmbuild(1) lehnt solche EVRs ab, aber es ist moglich, dass Sie durch API-Nutzung, sehr alte und mit Drittanbieter-Software erstellte Pakete auf solche >>unzulassigen<< Werte stossen. o Implizite Segmente konnen trugerisch sein: 1.f ist neuer als 1c.f. Das Ergebnis wird deutlicher, wenn die Segmente explizit gemacht werden: 1.f ist neuer als 1.c.f, da die Segmente einzeln verglichen werden, und c ist lexikografisch weiter hinten als f einsortiert. rpm(8), rpmbuild(1), rpmsort(1) http://www.rpm.org/ UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer: . RPM 6.0.1 8. Januar 2026 RPM-VERSION(7)