Skip to content
Ales Kozumplik edited this page Jul 14, 2014 · 5 revisions

The original DNF bugzilla.

Yum's way.

For the sake of this page, let's have package A-1 being renamed to B-1 with a subpackage B-1-sub

Our options:

The Yum Approach

Equivalent to considering all packages obsoleting A to the new package and its subpackages.

Con: 3rd party repos can easily mess it up.

Con: if a multilib package gets split, the following update always pulls in the other architecture even if it wasn't previously installed as obsoletes don't look at colours. Yum has a special handling for multilib packages in this scenario.

The Yum Approach where all the replacing packages must come from the same repo

Similar as above, somewhat safer, saner.

The Splits: Tag

Essentially the same as the Yum approach, perhaps with lower or no chance of accidental clash from a 3rd party repo.

Con: needs a new tag.

Verbose tags

B has:

Obsoletes: A

B-sub has:

Obsoletes: A
SplitFrom: B

Nicely describes both the rename and the split.

Con: needs a new tag.

Powerful spec language

B has:

Obsoletes: A

B-sub has:

Supplements: installed(A) <= 1

Note that a simple:

Supplements: B <= 1

won't work as the user might only sync the updates after some time when there's already B-2 available (an upgrade path we must support). Neither keeping the supplemented version at the same level as the latest B is acceptable because a user who deliberately removed B-2 would get B-3 installed on the next update.

Con: powerful spec language.