deb 패키지가 다른 이름으로 대체되어야 함을 어떻게 지정합니까?

deb 패키지가 다른 이름으로 대체되어야 함을 어떻게 지정합니까?

설치된 시스템의 foo기존 패키지를 대체해야 하는 데비안 패키지를 만들고 있습니다 .bar

나는 읽었습니다:

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

그리고 올바른 절은 다음 DEBIAN/control과 같아야 한다고 결론지었습니다.

Provides: foo
Conflicts: bar
Replaces: bar

그런데 이미 설치된 foo시스템에 패키지를 설치하려고 하면 .barfoobar

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

미리 기존 패키지의 이름을 바꾸고 나중에 원하는 패키지로 바꾸면 어떨까요?

이를 위해 아래 데비안 공식 위키 페이지에 따른 방법/방법을 따라야 합니다:

https://wiki.debian.org/Renaming_a_Package

관련 정보