2010-06-08 11 views
5

Tenemos una aplicación web que empaquetamos en un RPM. Tenemos un problema con el campo de versión del RPM.¿Cómo compara yum las versiones?

Digamos que hemos instalado nuestra rpm: foo-2.1.0.007

007 es nuestro número de compilación.

Ahora cuando intentamos instalar un rpm más nuevo, foo-2.1.0.010, yum dice "No hay nada que actualizar".

Cuando he rehice los RPM, pero quitado los ceros iniciales, el problema se resolvió:

foo-2.1.0.7

foo-2.1.0.10

Según this link cada segmento de la versión se compara como un número entero, pero la práctica muestra lo contrario.

Entonces mi pregunta es: ¿Cuál es el algoritmo de comparación de versiones para RPM y por qué los ceros a la izquierda interfieren?

Respuesta

14

Yum solo le pide a rpm que las compare. Puede instalar rpmdevtools y luego usar:

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

... que es lo que usted esperaría. A menos que tenga una época en el paquete 007, no estoy seguro de por qué está recibiendo una respuesta diferente. ¿Qué versión de rpm tienes? ¿Qué dice vercmp para ti?

+0

No tengo idea de cómo, pero ahora todo funciona como se esperaba, lo que significa que 010 está instalado encima de 007. Weird –

+1

Gracias, me permitió descubrir que RPM realmente piensa que 0.901 es más nuevo que 0.92 pero no 0.920. Obviamente, compara números enteros punteados en lugar de números decimales. – theory

Cuestiones relacionadas