Estoy creando un paquete Debian foo
que necesita reemplazar un paquete existente bar
en 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/control
debería verse así:
Provides: foo
Conflicts: bar
Replaces: bar
Sin embargo, cuando intento instalar el foo
paquete en un sistema que ya lo tiene bar
instalado, el sistema se resiste porque foo
entra en conflicto con bar
.
Si elimino la Conflicts: bar
entrada, dpkg
permitiré que ambos paquetes se instalen uno al lado del otro, lo cual es un problema ya que foo
debo reemplazar bar
.
¿Cuáles son las cláusulas de archivo adecuadas control
para lograrlo?
Lo intenté Breaks
en 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
dpkg
Es 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 foo
lo 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