Я создаю пакет Debian foo
который должен заменить существующий пакет bar
в системах, в которых он установлен.
Я прочел:
https://www.debian.org/doc/debian-policy/ch-relationships.html
И пришел к выводу, что правильные пункты в DEBIAN/control
должно выглядеть так:
Provides: foo
Conflicts: bar
Replaces: bar
Однако, когда я пытаюсь установить foo
пакет в системе, в которой уже есть bar
установлен, система блокируется, потому что foo
конфликтует с bar
.
Если я удалю Conflicts: bar
запись тогда dpkg
позволяет устанавливать оба пакета бок о бок, что является проблемой, поскольку foo
должен заменить bar
.
Какие правильные control
предложения файла для достижения этого?
я пробовал Breaks
вместо того 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
dpkg
это инструмент низкого уровня. Для получения желаемого эффекта пакет нужно поместить в репо и добавить в sources.list(5)
затем apt install foo
поступит правильно.
Почему бы не переименовать его заранее в существующий пакет, а потом заменить на тот, который вам нужен?
Для этого вам необходимо использовать методы / способы, указанные на официальной вики-странице Debian ниже:
https://wiki.debian.org/Renaming_a_Package