vonbrand tem tudo correto.
No seu exemplo, a versão w.x-y.z.el6_a.b significa que o número da versão do upstream é w.xe a versão da sua distribuição local (normalmente um patch ou número de compilação) é y.z.el6_a.b
Isso é diferente da versão w.x-y.z.el6, que é a mesma versão upstream (w.x), mas uma versão de distribuição local diferente (y.z.el6). Eles não são a mesma versão.
Quanto à diferença entre y.z.el6 e y.z.el6_a.b, isso dependerá da sintaxe específica da seção, que é totalmente dependente de como a pessoa / grupo que faz o pacote representa internamente suas versões. Para pacotes da Red Hat, a mudança que você está observando normalmente se refere a uma compilação diferente dentro de um único nível de correção. O código fonte pode ser idêntico para as duas versões, mas elas são compiladas contra diferentes versões do RHEL6 (por exemplo, 6.3 vs. 6.4). Eles podem depender de diferentes versões da glibc ou de outras bibliotecas compartilhadas.
Por exemplo, uma atualização que acabei de aplicar substituiu cups-1.4.2-48.el6_3.3.x86_64.rpm por cups-1.4.2-50.el6_4.4.x86_64.rpm. Ambos são compilações de copos versão 1.4.2. Pelo que entendi da convenção da Red Hat, o pacote foi atualizado do nível de patch 48 para 50, e agora é construído contra o RHEL 6.4 (vs. 6.3). Eu não tenho certeza do que significa o final ".4" vs ".3" - eu tenho alguns pacotes onde a versão termina em "el6", alguns que terminam em "el6_3", alguns em "el6_4", alguns em "el6_4 .1 ", alguns em" el6_4.4 ", etc. É claro que, como todos esses números de versão são específicos da distribuição, eu precisaria encontrar algum tipo de documento da Red Hat para ter certeza.
Em resumo, para o seu exemplo, esses dois pacotes são patches / builds diferentes da mesma versão de fonte upstream, mas o significado específico além disso exigirá perguntar a origem do pacote.