Seus números de versão são inconsistentes. A relação de ordem nos números de versão é bastante complexa. É descrito no manual de políticas do Debian . Em particular:
Primeiro, a parte inicial de cada string consistindo inteiramente de caracteres não dígitos é determinada. Estas duas partes (uma das quais pode estar vazia) são comparadas lexicalmente. Se uma diferença for encontrada, será retornada. A comparação lexical é uma comparação de valores ASCII modificados para que todas as letras sejam classificadas mais cedo do que todas as não-letras e para que um til seja classificado antes de qualquer coisa, até o final de uma parte. Por exemplo, as seguintes partes estão em ordem de classificação do mais antigo para o mais recente: ~~, ~~ a, ~, a parte vazia, a.
Em particular, 3.196~ppa1~quantal
é considerado mais antigo que 3.196
. O caso de uso típico de ~
é versões beta: 1.42~beta3
vem antes de 1.42
. Você pode verificar sua compreensão dos números de versão do pacote Debian executando dpkg --compare-versions
:
$ dpkg --compare-versions '3.196~ppa1~quantal' '>=' '3.196'; echo $?
1
0 significa que a relação de ordem é satisfeita, 1 significa que não é.
Há alguns conselhos incompletos sobre os números de versão na ajuda de empacotamento do PPA . Como o seu pacote não está no Ubuntu, você não precisa do sufixo ~
; você deve usar um número de versão como 3.196ppa1
. A dependência de origem pode ser (>= 3.196)
se qualquer release de 3.196 for feito, ou algo como (>= 3.196ppa5)
se você precisar de pelo menos uma certa liberação de pacote.
Se você manter o ~
aqui, você deve colocá-lo na dependência de origem também: (>= 3.196~ppa1~quantal)
. Para dizer "pelo menos a mesma versão do pacote principal", escreva
Depends: mypackagelib (>= ${binary:Version})
Outra possibilidade ( graças a tumbleweed é declarar uma dependência em 3.196~
(o número e um til e nada mais), o que é uma versão mais antiga que 3.196~anything
.
(Isso não se aplica a você, mas pode se aplicar a futuros visitantes. O que segue se aplica quando libmypackage
contém uma biblioteca compartilhada ( .so
).)
A propósito, a convenção de nomes para bibliotecas é libmypackage1
e libmypackage2
. Se você começou com mypackagelib-1
, você deve deixar isso, mas mude para libmypackage2
para a próxima versão.
Os dois pacotes de biblioteca mypackagelib-1
e mypackagelib-2
podem coexistir se ainda houver programas usando a biblioteca antiga e programas usando a nova biblioteca instalada ao mesmo tempo. A menos que o administrador solicite explicitamente a instalação do pacote da biblioteca (que ele só faria se tivesse um programa não empacotado exigindo a biblioteca, por exemplo, em /usr/local
), o pacote da biblioteca antiga será marcado como instalado automaticamente, ele será desinstalado automaticamente quando não houver dependências.
Para mais informações sobre como empacotar uma biblioteca, leia a Biblioteca Debian Guia de embalagem . Embora as políticas do Debian não sejam obrigatórias para um PPA do Ubuntu, é uma boa idéia segui-las: elas ilustram as melhores práticas para trabalhar com ferramentas de empacotamento do Debian.