Wie gebe ich an, dass ein Deb-Paket ein Paket mit einem anderen Namen ersetzen soll?

Wie gebe ich an, dass ein Deb-Paket ein Paket mit einem anderen Namen ersetzen soll?

Ich erstelle ein Debian-Paket foo, das ein vorhandenes Paket auf den Systemen ersetzen muss, barauf denen es installiert ist.

Ich habe gelesen:

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

Und kam zu dem Schluss, dass die korrekten Klauseln darin DEBIAN/controlwie folgt aussehen sollten:

Provides: foo
Conflicts: bar
Replaces: bar

fooWenn ich jedoch versuche, das Paket auf einem System zu installieren , auf dem es bereits barinstalliert ist, schreckt das System zurück, da fooKonflikte mit bestehen bar.

Conflicts: barWenn ich den Eintrag entferne dpkg, können beide Pakete nebeneinander installiert werden, was jedoch ein Problem darstellt, da fooersetzt werden muss bar.

Welche Dateiklauseln sind geeignet, controlum dies zu erreichen?

Ich habe Breaksstattdessen Folgendes versucht 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

Antwort1

dpkgist ein Low-Level-Tool. Um den gewünschten Effekt zu erzielen, sollte das Paket in ein Repo gepackt und hinzugefügt werden, sources.list(5)dann apt install foofunktioniert es richtig.

Antwort2

Warum benennen Sie das vorhandene Paket nicht vorher um und ersetzen es später durch das gewünschte?

Zu diesem Zweck müssen Sie die Methoden/Wege gemäß der folgenden offiziellen Debian-Wiki-Seite verwenden:

https://wiki.debian.org/Renaming_a_Package

verwandte Informationen