설치된 시스템의 foo
기존 패키지를 대체해야 하는 데비안 패키지를 만들고 있습니다 .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
미리 기존 패키지의 이름을 바꾸고 나중에 원하는 패키지로 바꾸면 어떨까요?
이를 위해 아래 데비안 공식 위키 페이지에 따른 방법/방법을 따라야 합니다:
https://wiki.debian.org/Renaming_a_Package