Hallo, wie entscheidet rpm, ob ein bestimmtes Paket ein Update eines anderen darstellt? Die Namen von RPM Paketen entsprechen nach meiner Erfahrung diesem Muster: (.+)-([^-]+)-([^-]+).(i[56]86|noarch).rpm $1 ist dabei der Name, $2 die Version und $3 die Revision, z.B. perl-PerlMagick-6.3.0.0-16.i586.rpm. Hier ist "perl-PerlMagick" der Name, "6.3.0.0" die Version und "16" die Revision. Nun gibt es aber auch Pakete mit Namen wie hal-0.5.8_git20061106-20.i586.rpm oder libstdc++41-4.1.2_20061115-5.i586.rpm. Rpm würde hal-1.5.8_git20061106-20 oder hal-0.50.8_git20061106-20 oder hal-0.5.8_git30061106-20 als Update für hal-0.5.8_git20061106-20 wohl zulassen. Aber wie macht es den Vergleich der Versionen? Bei Revisionsnummern ist das einigermaßen klar. Sie entsprechen dem Muster a.b.c.d..., wobei a, b, c, d natürliche Zahlen sind. Um 2 Revisionen zu vergleichen, fängt man also bei a an und vergleicht a1 mit a2. Wenn unterschiedlich, hat man das Ergebnis gefunden. Wenn gleich, vergleicht man b1 mit b2 usf. Versionsbezeichnungen entsprechen aber nicht dem Muster. Sind z.B. hal-0.5.8_gis20061106-20 oder hal-0.5.8_hit20061106-20 Updates für obiges Paket? Und wie steht es mit hal-0.05.8_git20061106-20? Besonders interessant ist auch, wie entschieden wird, daß 1.1 ein Update für 1.1b oder 1.1beta ist. Wenn jemand dazu einen Link oder eine Erklärung parat hat, haltet bitte nicht hinter dem Berg damit! Danke, Torsten
Hallo Torsten, On Tuesday 29 May 2007 10:48:16 Torsten Foertsch wrote: Eventuell hilft ja dieser Link? https://www.redhat.com/docs/books/max-rpm/index.html Roman -- Roman Fietze Telemotive AG Büro Mühlhausen
Am Dienstag, 29. Mai 2007 10:48 schrieb Torsten Foertsch:
wie entscheidet rpm, ob ein bestimmtes Paket ein Update eines anderen darstellt?
Die Namen von RPM Paketen entsprechen nach meiner Erfahrung diesem Muster:
Und genau das ist schon mal der falsche Ansatzpunkt. Namen sind Schall und Rauch! xaver.rpm kann durchaus ein Update für igor.rpm sein (erinnert sich noch jemand an die Zeiten, als die SUSE-RPMs die 8.3 Namensschemata einhielten), denn was es wirklich ist, steht im Paket und nicht im Dateinamen. -- Machs gut | http://www.iivs.de/schwinde/buerger/tremmel/ | http://packman.links2linux.de/ Manfred | http://www.knightsoft-net.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
On Tuesday 29 May 2007 22:58, Manfred Tremmel wrote:
wie entscheidet rpm, ob ein bestimmtes Paket ein Update eines anderen darstellt?
Die Namen von RPM Paketen entsprechen nach meiner Erfahrung diesem Muster:
Und genau das ist schon mal der falsche Ansatzpunkt. Namen sind Schall und Rauch! xaver.rpm kann durchaus ein Update für igor.rpm sein (erinnert sich noch jemand an die Zeiten, als die SUSE-RPMs die 8.3 Namensschemata einhielten), denn was es wirklich ist, steht im Paket und nicht im Dateinamen.
Ok, das habe ich mir auch gedacht. Trotzdem steht es meist auch im Filenamen. Angenommen, ich habe auf einem FTP- oder HTTP-Server eine Liste von RPMs, aber keine weitere Information, dann muß ich notgedrungen doch den Namen vertrauen, wenn ich nicht alle RPMs kopieren will. Ich weiß, daß es unter Suse das Verzeichnis repodata gibt, in dem all diese Infos in XML verpackt stehen, bzw. auf der CD das ARCHIVES.gz, wo man diese Daten auch finden kann. Was mich interessiert ist der Algorithmus mit dem 2 Versionen verglichen werden. "rpm -qi hal-resmgr-0.1_SVNr124-20.1" zeigt: Version : 0.1_SVNr124 Release : 20.1 Die Versionsbezeichnungen sind also auch hier keine Zahlenfolgen. Ist es reiner String-Vergleich, also strcmp in C, dann wäre 0.1_SVNr124 kleiner als 0.1_SVNr125 und kleiner als 0.1_svnr124, aber größer als 0.1_SVNR124. Dann wäre aber 0.1_SVNr124 größer als 0.11_SVNr892. Werden alle Zeichen außer Ziffern und Punkten als Trenner gewertet, so könnte man aus 0.1_SVNr124 die Folge (0.1, 124) und aus 0.11_SVNr892 (0.11, 892) machen und der Vergleich wäre wieder richtig. Aber was wird dann mit 1.1beta im Vergleich zu 1.1? Sie wären dann gleich, obwohl 1.1 wahrscheinlich der Nachfolger von 1.1beta ist. Torsten
On Wednesday 30 May 2007 09:04, Torsten Foertsch wrote:
Was mich interessiert ist der Algorithmus mit dem 2 Versionen verglichen werden.
Hier steht es: http://wraptastic.org/apidocs/html/rpmvercmp_8c-source.html Die Funktion wird auf Version und Revision angewendet. Torsten
Hi, Torsten Foertsch wrote:
Ist es reiner String-Vergleich, also strcmp in C, dann wäre 0.1_SVNr124 kleiner als 0.1_SVNr125 und kleiner als 0.1_svnr124, aber größer als 0.1_SVNR124. Dann wäre aber 0.1_SVNr124 größer als 0.11_SVNr892.
Werden alle Zeichen außer Ziffern und Punkten als Trenner gewertet, so könnte man aus 0.1_SVNr124 die Folge (0.1, 124) und aus 0.11_SVNr892 (0.11, 892) machen und der Vergleich wäre wieder richtig.
Das hier kann ich nicht genau sagen.
Aber was wird dann mit 1.1beta im Vergleich zu 1.1? Sie wären dann gleich, obwohl 1.1 wahrscheinlich der Nachfolger von 1.1beta ist.
Aber das hier kann ich sagen. 1.1beta wäre neuer als 1.1. Deswegen sind solche "Versionsnummern" ziemlich ungünstig. Ich verwende deswegen ab und zu sowas wie 1.0.99. Ansonsten muss man man RPM Epoch verwenden. Wolfgang -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Manfred Tremmel
-
Roman Fietze
-
Torsten Foertsch
-
Wolfgang Rosenauer