¿Cómo especifico que un paquete deb debe reemplazar uno con un nombre diferente?

¿Cómo especifico que un paquete deb debe reemplazar uno con un nombre diferente?

Estoy creando un paquete Debian fooque necesita reemplazar un paquete existente baren los sistemas en los que está instalado.

He leído:

https://www.debian.org/doc/debian-policy/ch-relationships.html

Y concluyó que las cláusulas correctas del DEBIAN/controldebería verse así:

Provides: foo
Conflicts: bar
Replaces: bar

Sin embargo, cuando intento instalar el foopaquete en un sistema que ya lo tiene barinstalado, el sistema se resiste porque fooentra en conflicto con bar.

Si elimino la Conflicts: barentrada, dpkgpermitiré que ambos paquetes se instalen uno al lado del otro, lo cual es un problema ya que foodebo reemplazar bar.

¿Cuáles son las cláusulas de archivo adecuadas controlpara lograrlo?

Lo intenté Breaksen lugar 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

Respuesta1

dpkgEs una herramienta de bajo nivel. Para obtener el efecto deseado, el paquete debe colocarse en un repositorio y agregarse para sources.list(5)hacer apt install foolo correcto.

Respuesta2

¿Por qué no cambiarle el nombre al paquete existente de antemano y luego reemplazarlo por el que desee?

Para este fin, debe utilizar los métodos/formas según la página wiki oficial de Debian a continuación:

https://wiki.debian.org/Renaming_a_Package

información relacionada