Estou trabalhando em alguma biblioteca compartilhada e agora estou com o problema de que alguns softwares se recusaram a escolher a versão mais recente, mas alguns precisam usar a mais recente, pois tem algumas alterações cruciais. Então eu preciso manter 2 versões diferentes da mesma biblioteca.
O problema é que eu uso uma espécie de pacote "fat" libel.deb
que contém arquivos de cabeçalho necessários para desenvolvedores, bem como o binário real so
compatível com os arquivos de cabeçalho. Estou pensando em dividir o libel.deb
em libel-dev.deb
e libel1-bin.deb
, libel2-bin.deb
.
Mas o problema é que libel-dev
contém cabeçalhos compatíveis com a versão mais recente da biblioteca, então os desenvolvedores realmente precisam instalar 2 pacotes: libel-dev
e libel2-bin
que é propenso a erros (muito fácil de instalar dev
e bin
pacotes incompatíveis).
Como proceder nesta questão? Provavelmente é possível que o dev-package contenha binários também...?
O conteúdo dos pacotes -dev, -bin, etc. é inteiramente convenção, o gerenciador de pacotes não se importa. Se você estava realmente fazendo o upload para o arquivo Ubuntu (ou Debian), várias ferramentas (e pessoas) podem verificar se as convenções estão sendo seguidas, mas para pacotes locais você não precisa segui-las se não quiser. Dito isso, muitas vezes há boas razões para segui-los – reduzindo a confusão, se nada mais.
Dito isto, os vários cabeçalhos de relacionamentos de pacotes (Depends, Breaks, etc.) suportam todas as versões; se você declarar os relacionamentos corretamente, o gerenciador de pacotes deverá impedi-lo de instalar um conjunto incompatível. Nem parece que você precisa de versões; apenas que libel-dev precisa Depende: em libel2-bin e libel2-bin precisa Conflicts: libel1-bin (se eles não forem co-instaláveis).
Você pode achar úteis os Manuais de Política Debian “Declarando relacionamentos entre pacotes” .