インストールされているシステム上の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
答え1
dpkg
低レベルのツールです。目的の効果を得るには、パッケージをリポジトリに入れて追加すれば、sources.list(5)
正しくapt install foo
動作します。
答え2
既存のパッケージの名前を事前に変更しておき、後で必要なパッケージに置き換えてみてはいかがでしょうか?
このためには、以下の Debian 公式 wiki ページに記載されている方法に従う必要があります。
https://wiki.debian.org/Renaming_a_Package