4024
Comment:
|
4207
|
Deletions are marked like this. | Additions are marked like this. |
Line 22: | Line 22: |
|| '''case''' || '''Package situation''' || '''Flags for new A package''' || '''Flags for new B package''' || | || '''case''' || '''Package transition situation''' || '''Flags for new A package''' || '''Flags for new B package''' || |
Line 24: | Line 24: |
|| #2 || '''Resolved conflicts''': old A and B conflicted each other; only newer A and B can coexists || Conflicts: B (<<2) || Conflicts: A (<<2) || || #3 || '''Virtual package''': normal virtual package avoiding '''Conflicts''' using update-alternatives(8) || Provides: virt || Provides: virt || |
|| #2 || '''Resolved conflicts''': old A and B conflicted each other; only newer A and B can coexist || Conflicts: B (<<2) || Conflicts: A (<<2) || || #3 || '''Virtual package''': normal virtual package which avoid '''Conflicts''' using update-alternatives(8) etc. || Provides: virt || Provides: virt || |
Line 35: | Line 35: |
||<(|2> #7 ||<(|2> '''Split''': only A existed; move some files from A to B; new A does not require new B ||<(|2> || Breaks: A (<<2) || | ||<(|2> #7 ||<(|2> '''Split''': only A existed; move some files from A to B; new A does not require new B ||<(|2> || Breaks: A (<<2) || |
Line 37: | Line 37: |
||<(|2> #8 ||<(|2> '''Split''': only A existed; move some files from A to B; new A always require new B ||<(|2> Depends: B || Breaks: A (<<2) || | ||<(|2> #8 ||<(|2> '''Split''': only A existed; move some files from A to B; new A always requires new B ||<(|2> Depends: B || Breaks: A (<<2) || |
Line 41: | Line 41: |
||<(|2> #10 ||<(|2> '''Reorg''': A and B existed; move some files from A to B; new A always require new B ||<(|2> Depends: B (>=2) || Breaks: A (<<2) || | ||<(|2> #10 ||<(|2> '''Reorg''': A and B existed; move some files from A to B; new A always requires new B ||<(|2> Depends: B (>=2) || Breaks: A (<<2) || |
Line 49: | Line 49: |
This document is based on following references and postings: | This document is based on following references and mailing list messages: |
Line 56: | Line 56: |
* [[http://lists.debian.org/debian-mentors/2010/07/msg00349.html|conflicts/replaces/provides vs. breaks/replaces/provides under policy 3.9.1]] | * [[http://lists.debian.org/debian-mentors/2010/07/msg00349.html|conflicts/replaces/provides vs. breaks/replaces/provides under policy 3.9.1]] and following messages. * [[http://lists.debian.org/debian-policy/2010/06/msg00222.html]] explaining why Breaks is needed for dist-upgrades. |
Line 58: | Line 59: |
Translation(s): none
This page summarizes several Debian package transition scenarios which require some coordinated tweaks on debian/control file of newly uploaded packages.
Recent Debian Policy (>> 3.8.0) updates on "Breaks" field is accounted here.
Contents
Package Transition
Basic scenarios
Let's assume package version to be
- old package: 1.0
- new package: 2.0
case |
Package transition situation |
Flags for new A package |
Flags for new B package |
#1 |
Conflicts: never work together |
Conflicts: B |
Conflicts: A |
#2 |
Resolved conflicts: old A and B conflicted each other; only newer A and B can coexist |
Conflicts: B (<<2) |
Conflicts: A (<<2) |
#3 |
Virtual package: normal virtual package which avoid Conflicts using update-alternatives(8) etc. |
Provides: virt |
Provides: virt |
#4 |
Exclusive virtual package: exclusive virtual package such as mail-transport-agent |
Provides: virt |
Provides: virt |
Conflicts: virt |
Conflicts: virt |
||
Replaces: virt |
Replacess: virt |
||
#5 |
Rename: only A existed; move everything from A into B; make A a transitional package without real contents |
Depends: B |
Breaks: A (<<2) |
Replaces: A (<<2) |
|||
optional* -- Provides: A |
|||
#6 |
Merge: A and B existed; merge everything from A into B; make A a transitional package without real contents |
Depends: B (>=2) |
Breaks: A (<<2) |
Replaces: A (<<2) |
|||
optional* -- Provides: A |
|||
#7 |
Split: only A existed; move some files from A to B; new A does not require new B |
|
Breaks: A (<<2) |
Replacess: A (<<2) |
|||
#8 |
Split: only A existed; move some files from A to B; new A always requires new B |
Depends: B |
Breaks: A (<<2) |
Replacess: A (<<2) |
|||
#9 |
Reorg: A and B existed; move some files from A to B; new A does not require new B |
Breaks: B (<<2) |
Breaks: A (<<2) |
Replaces: A (<<2) |
|||
#10 |
Reorg: A and B existed; move some files from A to B; new A always requires new B |
Depends: B (>=2) |
Breaks: A (<<2) |
Replaces: A (<<2) |
*) Provides are needed only when there are some packages which depend on A.
See also
This document is based on following references and mailing list messages:
Debian Policy Manual, Chapter 7 - Declaring relationships between packages
- manual page: deb-control(5)
http://lists.debian.org/debian-ctte/2010/05/msg00012.html and following messages.
conflicts/replaces/provides vs. breaks/replaces/provides under policy 3.9.1 and following messages.
http://lists.debian.org/debian-policy/2010/06/msg00222.html explaining why Breaks is needed for dist-upgrades.
- guessing ...