Como especifico que um pacote deb deve substituir outro por um nome diferente?

Como especifico que um pacote deb deve substituir outro por um nome diferente?

Estou criando um pacote Debian fooque precisa substituir um pacote existente barnos 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/controldeveriam ser assim:

Provides: foo
Conflicts: bar
Replaces: bar

No entanto, quando tento instalar o foopacote em um sistema que já está barinstalado, o sistema hesita porque fooentra em conflito com o bar.

Se eu remover a Conflicts: barentrada, dpkgambos os pacotes serão instalados lado a lado, o que é um problema, pois foodeve substituir o bar.

Quais são as controlcláusulas de arquivo adequadas para conseguir isso?

Eu tentei Breaksem 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 foofará 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

informação relacionada