Para publicar pacotes RPM de várias versões diferentes de algum software, estou procurando uma maneira de especificar "números" de versão que são considerados "atualizações" e incluir a diferenciação de várias versões de pré-lançamento, como (em ordem): "2.4.0 alfa 1", "2.4.0 alfa 2", "2.4.0 alfa 3", "2.4.0 beta 1", "2.4.0 beta 2", "versão 2.4.0 candidato "," 2.4.0 final "," 2.4.1 "," 2.4.2 ", etc.
O principal problema que tenho com isso é que o RPM considera que "2.4.0" vem antes de "2.4.0.alpha1", então não posso simplesmente adicionar o sufixo no final do número da versão final. / p>
Eu poderia tentar "2.4.0.alpha1", "2.4.0.beta1", "2.4.0.final", o que funcionaria, exceto pelo "release candidate" que seria considerado posterior a "2.4. 0.final ".
Uma alternativa que considerei é usar a seção "epoch:" do número da versão do RPM (o prefixo epoch: é considerado antes do número da versão principal para que "1: 2.4.0" seja na verdade anterior a "2: 1.0". 0 "). Colocando um timestamp no campo epoch:, todas as versões são ordenadas conforme o esperado pelo RPM, porque suas versões parecem aumentar no tempo. No entanto, isso falha quando novas versões são feitas em várias versões principais ao mesmo tempo (por exemplo, 2.3.2 é lançado após 2.4.0, mas sua versão para RPM é "20121003: 2.3.2" e "20120928: 2.4". 0 "e sistemas em 2.3.2 não podem obter" upgrade "para 2.4.0, porque o rpm o vê como uma versão mais antiga). Neste caso, yum / zypper / etc se recusam a atualizar para o 2.4.0, portanto, meu problema.
Quais números de versão eu posso usar para conseguir isso e garantir que o RPM sempre considere os números de versão em ordem. Ou, se não os números de versão, outro mecanismo no empacotamento RPM?
Nota 1: Eu gostaria de manter o campo "Release:" do arquivo de especificações para seu propósito original (várias versões de pacotes, incluindo mudanças de pacotes, para a mesma versão do software empacotado).
Nota 2: Isso deve funcionar nas versões atuais de produção das principais distribuições, como RHEL / CentOS 6 e SLES 11. Mas estou interessado em soluções que também não o são, desde que não envolvam a recompilação rpm!
Nota 3: Em sistemas do tipo Debian, o dpkg usa um componente especial no número da versão que é o caractere "~" (til). Isto faz com que o dpkg conte o sufixo como ordem "negativa", de forma que "2.4.0 ~ qualquer coisa" venha antes de "2.4.0". Então, a ordenação normal se aplica após o "~", então "2.4.0 ~ alpha1" vem antes de "2.4.0 ~ beta1" porque "alpha" vem antes de "beta" alfabeticamente. Eu não estou necessariamente olhando para usar o mesmo esquema para pacotes RPM (eu tenho certeza que não existe tal equivalente), então isso é apenas FYI.