3900
Comment:
|
3975
|
Deletions are marked like this. | Additions are marked like this. |
Line 23: | Line 23: |
|| #1 || Never work together || Conflicts: B || Conflicts: A || || #2 || Old A and B conflicted each other; only newer A and B can coexists || Conflicts: B (<<2) || Conflicts: A (<<2) || || #3 || Implement normal virtual pkg (avoid '''Conflicts''' with update-alternatives(8)) || Provides: virt || Provides: virt || ||<(|3> #4 ||<(|3> Implement an exclusive virtual pkg (a la mail-transport-agent) || Provides: virt || Provides: virt || |
|| #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 coexists || Conflicts: B (<<2) || Conflicts: A (<<2) || || #3 || '''Virtual package''': normal virtual package avoiding '''Conflicts''' using update-alternatives(8) || Provides: virt || Provides: virt || ||<(|3> #4 ||<(|3> '''Exclusive virtual package''': exclusive virtual package such as mail-transport-agent || Provides: virt || Provides: virt || |
Line 29: | Line 29: |
||<(|3> #5 ||<(|3> '''Rename''': Only A existed; move everything from A into B; make A a transitional package without real contents ||<(|3> Depends: B || Breaks: A (<<2) || | ||<(|3> #5 ||<(|3> '''Rename''': only A existed; move everything from A into B; make A a transitional package without real contents ||<(|3> Depends: B || Breaks: A (<<2) || |
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 require new B ||<(|2> Depends: B || Breaks: A (<<2) || |
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 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 coexists |
Conflicts: B (<<2) |
Conflicts: A (<<2) |
#3 |
Virtual package: normal virtual package avoiding Conflicts using update-alternatives(8) |
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 require 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 require 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 postings:
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
Debian Policy Manual, Chapter 7 - Declaring relationships between packages