Estou criando um pacote Debian foo
que precisa substituir um pacote existente bar
nos sistemas nos quais está instalado.
Eu li:
https://www.debian.org/doc/debian-policy/ch-relationships.html
E concluiu que as cláusulas corretas DEBIAN/control
deveriam ser assim:
Provides: foo
Conflicts: bar
Replaces: bar
No entanto, quando tento instalar o foo
pacote em um sistema que já está bar
instalado, o sistema hesita porque foo
entra em conflito com o bar
.
Se eu remover a Conflicts: bar
entrada, dpkg
ambos os pacotes serão instalados lado a lado, o que é um problema, pois foo
deve substituir o bar
.
Quais são as control
cláusulas de arquivo adequadas para conseguir isso?
Eu tentei Breaks
em vez de Conflicts
:
dpkg: regarding foo_DEV-22._i386.deb containing foo:
foo breaks bar
bar (version 3.2.2.1-x86NX4.4-x86) is present and installed.
bar provides bar and is present and installed.
dpkg: error processing foo_DEV-22._i386.deb (--install):
installing foo would break existing software
Errors were encountered while processing:
foo_DEV-22._i386.deb
Responder1
dpkg
é uma ferramenta de baixo nível. Para obter o efeito desejado, o pacote deve ser colocado em um repositório e adicionado a sources.list(5)
ele apt install foo
fará a coisa certa.
Responder2
Por que não renomeá-lo previamente para o pacote existente e depois substituí-lo pelo que você deseja?
Para este fim, você deve usar métodos/maneiras conforme a página wiki oficial do Debian abaixo:
https://wiki.debian.org/Renaming_a_Package