Differences between revisions 3 and 4
Revision 3 as of 2010-08-07 13:14:10
Size: 3900
Editor: OsamuAoki
Comment:
Revision 4 as of 2010-08-07 13:20:58
Size: 3975
Editor: OsamuAoki
Comment:
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.

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: