Differences between revisions 5 and 6
Revision 5 as of 2010-08-07 13:57:58
Size: 4024
Editor: OsamuAoki
Comment:
Revision 6 as of 2010-08-07 14:16:05
Size: 4207
Editor: OsamuAoki
Comment:
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.

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: