Como forçar a sobrescrever arquivos ao criar o pacote deb?

2

Estou tentando criar um pacote deb do programX.Y, é possível que no sistema destino exista o mesmo programa mas outra versão (programX.Z) se eu gerar um deb pacakge com:

dpkg-buildpackage -us -uc --source-option=--include-binaries --source-option=-isession

Quando tento instalar o pacakge em um sistema que tem outra versão do programa (programX.Z) eu recebo:

dpkg: error processing programX.Y.deb (--install):
    trying to overwrite '/usr/lib/XXX', which is also in package programX.Z

Se eu passar - force-overwrite, resolvo o problema, mas não quero essa solução.

A questão é como posso criar um pacote deb de uma versão do programa que possa ser instalado no sistema e forçar a sobregravação automaticamente. Um exemplo poderia ser python. Python3 tem muitas versões (3.1, 3.2, 3.3, 3.4, 3.5 ...). Eu quero instalar o meu pacote personalizado python versão 3.6 no sistema que instalou python3.4.

É possível?

    
por RdlP 20.03.2017 / 21:24

1 resposta

4

Você não pode criar um pacote que faça o equivalente a --force-overwrite , mas há outras soluções.

  • Um pacote pode mover um arquivo conflitante para fora do caminho; isto é conhecido como um desvio e é tratado usando dpkg-divert .
  • Arquivos que são comuns a dois pacotes (tornando-os conflitantes) normalmente são enviados em um terceiro (supondo que sejam idênticos). Esta pode ser a solução apropriada para o seu problema /usr/lib/XXX .
  • Várias versões de um pacote podem ser co-instaláveis e, se necessário, um padrão escolhido usando alternativas ou um pacote de "padrões". Esta é a abordagem adotada para os pacotes do interpretador Python, o compilador GCC ... Atualmente na instável Debian, o Python 3.5 e 3.6 estão disponíveis e podem ser instalados lado-a-lado; o padrão Python 3 (3.5) é determinado usando links simbólicos no pacote python3 de pacotes.
por 20.03.2017 / 22:36