web-dev-qa-db-ja.com

debパッケージを別の名前に置き換えるように指定するにはどうすればよいですか?

インストールされているシステムで既存のパッケージfooを置き換える必要があるDebianパッケージbarを作成しています。

もう読んだ:

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

そして、DEBIAN/controlの正しい句は次のようになるはずであると結論付けました。

Provides: foo
Conflicts: bar
Replaces: bar

ただし、すでにfooがインストールされているシステムにbarパッケージをインストールしようとすると、foobarと競合するため、システムが停止します。

Conflicts: barエントリを削除すると、dpkgは両方のパッケージを並べてインストールできるようになります。これは、foobarを置き換える必要があるため問題です。

これを実現するための適切な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
5
spierepf

dpkgは低レベルのツールです。目的の効果を得るには、パッケージをリポジトリに配置してsources.list(5)に追加する必要があります。そうすると、apt install fooが正しい処理を実行します。

1
cstamas

事前に既存のパッケージに名前を変更し、後で必要なものに置き換えてみませんか?

この目的のために、以下のDebian公式wikiページに従ってメソッド/方法を実行する必要があります。

https://wiki.debian.org/Renaming_a_Package
1
ostendali