Afin de publier des packages RPM de plusieurs versions différentes de certains logiciels, je cherche un moyen de spécifier des "numéros" de version qui sont considérés comme des "mises à niveau", et d'inclure la différenciation de plusieurs versions préliminaires, telles que (dans l'ordre ): "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 release candidate", "2.4.0 final", "2.4.1", "2.4.2", etc.
Le principal problème que j'ai avec cela est que RPM considère que "2.4.0" vient plus tôt que "2.4.0.alpha1", donc je ne peux pas simplement ajouter le suffixe à la fin du numéro de version finale.
Je pourrais essayer "2.4.0.alpha1", "2.4.0.beta1", "2.4.0.final", qui fonctionnerait, à l'exception de la "version candidate" qui serait considérée plus tard que "2.4.0.final" ".
Une alternative que j'ai envisagée consiste à utiliser la section "epoch:" du numéro de version de RPM (le préfixe epoch: est considéré avant le numéro de version principal afin que "1: 2.4.0" soit en fait antérieur à "2: 1.0.0") . En plaçant un horodatage dans le champ epoch:, toutes les versions sont ordonnées comme prévu par RPM, car leurs versions semblent incrémenter dans le temps. Cependant, cela échoue lorsque de nouvelles versions sont effectuées sur plusieurs versions principales en même temps (par exemple, 2.3.2 est publié après 2.4.0, mais leur version pour RPM est "20121003: 2.3.2" et "20120928: 2.4. 0 "et les systèmes sur 2.3.2 ne peuvent pas être" mis à niveau "vers 2.4.0, car rpm le voit comme une version plus ancienne). Dans ce cas, yum / zypper / etc refuse de passer à la version 2.4.0, donc mon problème.
Quels numéros de version puis-je utiliser pour y parvenir et assurez-vous que RPM considère toujours les numéros de version comme étant en ordre. Ou si ce n'est pas des numéros de version, un autre mécanisme dans l'emballage RPM?
Remarque 1: je voudrais conserver le champ "Release:" du fichier de spécifications pour son usage d'origine (plusieurs versions de packages, y compris les modifications de package, pour la même version du logiciel packagé).
Remarque 2: cela devrait fonctionner sur les versions de production actuelles des principales distributions, telles que RHEL / CentOS 6 et SLES 11. Mais je suis intéressé par des solutions qui ne le font pas, aussi, tant qu'elles n'impliquent pas de recompiler rpm!
Remarque 3: Sur les systèmes de type Debian, dpkg utilise un composant spécial dans le numéro de version qui est le caractère "~" (tilde). Cela oblige dpkg à compter le suffixe comme un ordre "négatif", de sorte que "2.4.0 ~ rien" viendra avant "2.4.0". Ensuite, l'ordre normal s'applique après le "~", donc "2.4.0 ~ alpha1" précède "2.4.0 ~ beta1" car "alpha" précède alphabétiquement "beta". Je ne cherche pas nécessairement à utiliser le même schéma pour les packages RPM (je suis sûr que cet équivalent n'existe pas), donc c'est juste FYI.
la source
Fedora a un ensemble de directives pour définir le numéro de version / version des packages de pré-version . Fondamentalement, vous utilisez le numéro de version de ce qui sera la version finale dans
Version
, et commencez leRelease
numéro par0.
, un numéro incrémenté, puisalpha
,beta
ou autre chose. Vous n'utiliseriez pas du tout de balise alphanumériquefinal
pour la version finale.Notez que vous ne pouvez pas compter sur RPM pour prendre en charge le versionnement de tilde de style Debian. Plusieurs distributions désactivent cette fonctionnalité.
la source
Je ne suis pas fan des distinctions alpha / bêta. Il y a du code publié et du code non publié.
Comment je le fais: j'aime le major.minor.build avec un système d'intégration continue (voir JenkinsCI). Le nombre entier de construction n'est jamais réinitialisé. Les modifications mineures du numéro de version sont destinées aux modifications rétrocompatibles. Les changements de nombres majeurs sont de grosses affaires.
Si le marketing n'aime pas que le «build» soit de grands nombres entiers, vous pouvez incrémenter le nombre mineur une fois pour le marketing uniquement sur les builds qui sont publiées, puis à nouveau lorsqu'il passe à l'ingénierie.
la source
Je suis tombé sur un problème similaire et j'ai dû comparer les révisions entre RedHat, Debian, les packages Python et les gemmes Ruby pour unifier le numéro de la suite, ce qui m'a aidé à évaluer le "plus grand" que le "moins de" dans chaque cas:
Cela compare 1.3.0.post0.dev20180213210433 à 1.3.0, YMMV
pour Red Hat (merci à https://utcc.utoronto.ca/~cks/space/blog/linux/RPMShellVersionComparison )
Pour Debian:
Pour Python
Pour Ruby
la source
Depuis la version 4.10.0, RPM prend officiellement en charge la numérotation tilde de style dpkg mentionnée dans la question.
https://rpm.org/wiki/Releases/4.10.0
la source