2010-06-08 8 views
5

Abbiamo un'app Web che includiamo in un RPM. Abbiamo un problema con il campo versione di RPM.Come si confrontano le versioni di yum?

Diciamo che abbiamo installato il nostro rpm: foo-2.1.0.007

007 è il nostro numero di build.

Ora, quando proviamo a installare un nuovo rpm, foo-2.1.0.010, yum dice "Non c'è nulla da aggiornare".

Quando ho rifatto gli RPM, ma rimosso gli zeri iniziali, il problema è stato risolto:

foo-2.1.0.7

foo-2.1.0.10

Secondo this link ogni segmento della versione viene confrontato come un numero intero, ma la pratica mostra il contrario.

Quindi la mia domanda è: qual è l'algoritmo di confronto delle versioni per RPM e perché gli zeri iniziali interferiscono?

risposta

14

Yum chiede semplicemente rpm per confrontarli. È possibile installare rpmdevtools e quindi utilizzare:

% rpmdev-vercmp foo-2.1.0.010 foo-2.1.0.007 
0:foo-2.1.0.010 is newer 

... che è ciò che ti aspetteresti. A meno che non abbiate un'epoca nel pacchetto 007, non sono sicuro del perché abbiate una risposta diversa. Quale versione di rpm hai? Cosa dice Vercmp per te?

+0

Non ho idea di come, ma ora tutto funziona come previsto, ovvero 010 è installato su 007. Strano –

+1

Grazie, mi ha permesso di capire che RPM pensa davvero che 0.901 sia più recente di 0.92 ma non 0.920. Ovviamente confronta interi punteggiati piuttosto che numeri decimali. – theory