Was kommt nach dem Unterstrich in einer RPM-Versionszeichenfolge?

2530
Coderer

Ich bekomme Abhängigkeitskonflikte, wenn ich versuche, ein einfaches auszuführen yum update. Ich stelle fest, dass in einigen Fällen nach einem Paket gesucht foo w.x-y.z.el6wird foo w.x-y.z.el6_a.b, das nur beim Repo aufgerufen wird, wo a.betwa "2.1" oder "2.9" steht. Die Spezifikation für RPM-Dateinamen erwähnt dieses Unterstrich-Bit nicht - was bedeutet das?

2

2 Antworten auf die Frage

5
David C.

vonbrand hat alles richtig.

In Ihrem Beispiel bedeutet Version wx-yzel6_a.b, dass die Upstream-Versionsnummer wx ist und die Version Ihrer lokalen Distribution (normalerweise eine Patch- oder Build-Nummer) yzel6_a.b ist

Dies unterscheidet sich von Version wx-yzel6, bei der es sich um dieselbe Upstream-Version (wx) handelt, jedoch um eine andere lokale Distributionsversion (yzel6). Sie sind nicht die gleiche Version.

Was den Unterschied zwischen yzel6 und yzel6_a.b betrifft, würde dies von der spezifischen Syntax des Abschnitts abhängen, die völlig davon abhängt, wie die Person / Gruppe, die das Paket erstellt, seine Versionen intern nummeriert. Bei Paketen von Red Hat bezieht sich die Änderung, die Sie beobachten, normalerweise auf einen anderen Build innerhalb eines einzigen Patch-Levels. Der Quellcode kann für beide Versionen identisch sein, sie werden jedoch gegen verschiedene Versionen von RHEL6 kompiliert (z. B. 6.3 vs. 6.4). Sie können von verschiedenen Versionen von glibc oder anderen gemeinsam genutzten Bibliotheken abhängen.

Ein Update, das ich soeben angewendet habe, hat beispielsweise cups-1.4.2-48.el6_3.3.x86_64.rpm durch cups-1.4.2-50.el6_4.4.x86_64.rpm ersetzt. Beide sind Versionen von Cups Version 1.4.2. Wenn ich die Red Hat-Konvention verstehe, wurde das Paket von Patch 48 auf 50 aktualisiert und ist jetzt gegen RHEL 6.4 (vs. 6.3) gebaut. Ich bin nicht sicher, was das letzte ".4" vs ".3" bedeutet - ich habe einige Pakete, bei denen die Version auf "el6" endet, einige, die auf "el6_3" enden, einige auf "el6_4", einige auf "el6_4" .1 ", einige in" el6_4.4 "usw. Da alle diese Versionsnummern Distributionsspezifisch sind, müsste ich natürlich eine Art Red Hat-Dokument finden, um sicher zu sein.

Zusammenfassend sind diese beiden Pakete für Ihr Beispiel verschiedene Patches / Builds derselben Upstream-Quellversion, aber die spezielle Bedeutung darüber hinaus erfordert die Abfrage der Quelle des Pakets.

1
vonbrand

Der Name des RPM-Pakets lautet <Name> - <Version> - <Localrelease>. <Arch> .rpm Der <Name> ist der Paketname (es kann durchaus etwas wie funky-gui-devel-libs sein, die '-' s trennendes Zeug wird vom Ende gezählt), <version> ist die Upstream-Version (kein '-'!), <localrelease> ist eine lokale Version (möglicherweise gibt es mehrere Patches-Runden auf derselben Upstream-Basis Zielsystem), <arch> ist die Architektur. Der Unterstrich ist nur ein Trennzeichen, das hier kein "-" ist.

In meinem Beispiel ist die gesamte Zeichenfolge `yzel6_a.b` die ? In diesem Fall würde ich nicht erwarten, dass der Endteil (`_a.b`) die Versionsberechnung beeinflusst, aber es scheint wichtig zu sein ... Coderer vor 11 Jahren 0