インストールされているシステムで既存のパッケージfoo
を置き換える必要があるDebianパッケージ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公式wikiページに従ってメソッド/方法を実行する必要があります。
https://wiki.debian.org/Renaming_a_Package