Parte da string da versão é a versão "upstream". Upstream significa para a fonte original, e downstream significa para o pacote distro. Eu acho que geralmente não há nada entre isso, então existem basicamente dois estágios (a fonte original e o pacote distro compilado).
Por exemplo, bash-4.2.39 é apenas isso. A fonte original do bash-4.2.39 é exatamente a mesma, e do mesmo lugar, independentemente de você estar usando fedora, ubuntu, arch ou qualquer outra coisa. Existe apenas uma fonte para o bash-4.2.39. "4.2.39" seria o que eu chamo de número de versão upstream.
Essa fonte, no entanto, pode ser compilada de várias maneiras diferentes (além da arquitetura do sistema); Certamente este é o caso de bash. Essa é uma decisão tomada pelos empacotadores de recebimento de dados, que também podem incluir itens (como uma configuração) fora da fonte original. Neste ponto, pode haver diferenças claras entre o bash 4.2.39 empacotado para o Ubuntu e o bash 4.2.39 para o fedora (e diferenças entre versões da mesma distro). Isso é indicado principalmente pela parte final da string de versão - "ubuntu8.12" ou qualquer outra coisa. Além disso, exatamente qual versão de distribuição e distro o pacote foi compilado é importante porque corresponde a outros pacotes (bibliotecas compartilhadas) que este requer; mesmo que haja uma bash 4.2.39 disponível para o Ubuntu 10 e 12, eles podem não ser intercambiáveis.
Coisas como '-42' são indicativas de algumas versões adicionais a jusante, pela distro. Isso pode ter algo a ver com diferenças de configuração, correção de distros, etc., nesse caso, a mesma versão '-42' pode ser usada em múltiplos repositórios para múltiplas versões da distribuição (e suas derivações).
Isto adiciona uma string de versão única, indicando a versão original da fonte , a versão do pacote , e a versão específica da distro + distro .