Para publicar paquetes RPM de varias versiones diferentes de algún software, estoy buscando una forma de especificar "números" de versión que se consideren "actualizaciones" e incluir la diferenciación de varias versiones preliminares, como (en orden ): "2.4.0 alpha 1", "2.4.0 alpha 2", "2.4.0 alpha 3", "2.4.0 beta 1", "2.4.0 beta 2", "2.4.0 versión candidata", "2.4.0 final", "2.4.1", "2.4.2", etc.
El principal problema que tengo con esto es que RPM considera que "2.4.0" viene antes que "2.4.0.alpha1", por lo que no puedo agregar el sufijo al final del número de versión final.
Podría probar "2.4.0.alpha1", "2.4.0.beta1", "2.4.0.final", que funcionaría, a excepción del "candidato de liberación" que se consideraría más tarde que "2.4.0.final ".
Una alternativa que consideré es usar la sección "epoch:" del número de versión RPM (el prefijo epoch: se considera antes del número de versión principal para que "1: 2.4.0" sea realmente anterior a "2: 1.0.0") . Al poner una marca de tiempo en el campo epoch: todas las versiones se ordenan según lo esperado por RPM, porque sus versiones parecen incrementarse en el tiempo. Sin embargo, esto falla cuando se realizan nuevos lanzamientos en varias versiones principales al mismo tiempo (por ejemplo, 2.3.2 se lanza después de 2.4.0, pero su versión para RPM es "20121003: 2.3.2" y "20120928: 2.4. 0 "y los sistemas en 2.3.2 no pueden" actualizarse "a 2.4.0, porque rpm lo ve como una versión anterior). En este caso, yum / zypper / etc se niegan a actualizar a 2.4.0, por lo tanto, mi problema.
¿Qué números de versión puedo usar para lograr esto y asegurarme de que RPM siempre considere que los números de versión están en orden? ¿O si no los números de versión, otro mecanismo en el paquete RPM?
Nota 1: Me gustaría mantener el campo "Release:" del archivo de especificaciones para su propósito original (varias versiones de paquetes, incluidos cambios de empaque, para la misma versión del software empaquetado).
Nota 2: Esto debería funcionar en las versiones de producción actuales de las principales distribuciones, como RHEL / CentOS 6 y SLES 11. ¡Pero también estoy interesado en soluciones que no lo hagan, siempre que no impliquen recompilar rpm!
Nota 3: en sistemas similares a Debian, dpkg utiliza un componente especial en el número de versión que es el carácter "~" (tilde). Esto hace que dpkg cuente el sufijo como un orden "negativo", de modo que "2.4.0 ~ cualquier cosa" aparecerá antes que "2.4.0". Luego, el orden normal se aplica después de "~", por lo que "2.4.0 ~ alpha1" va antes que "2.4.0 ~ beta1" porque "alpha" viene antes de "beta" alfabéticamente. No estoy buscando necesariamente usar el mismo esquema para paquetes RPM (estoy bastante seguro de que no existe tal equivalente), por lo que esto es solo para su información.