[Aptitude-devel] Bug#494506: Aptitude could expose 'replaces' rules to operator
Manuel A. Fernandez Montecelo
manuel.montezelo at gmail.com
Thu Mar 3 22:28:55 UTC 2016
Control: severity -1 wishlist
Control: tags -1 + wontfix
Hi Richard,
2008-08-10 08:58 Richard Kettlewell:
>Package: aptitude
>Version: 0.4.11.9-1
>
>The upgrade here is from 14.0.1-2+b1 of the various sox packages to
>14.1.0-1.
>
>In this upgrade, libsox-fmt-ogg disappears, its functionality subsumed
>into libsox-fmt-base. The latter package has a Replaces: header
>indicating this.
>
>The output from Aptitude is:
>
>-----------------------------------------
>$ sudo aptitude dist-upgrade
>Reading package lists... Done
>Building dependency tree
>Reading state information... Done
>Reading extended state information
>Initializing package states... Done
>Reading task descriptions... Done
>The following packages are BROKEN:
> libsox-fmt-ogg
>The following NEW packages will be installed:
> libsndfile1{a} libsox0a{a} libwavpack1{a}
>The following packages will be REMOVED:
> libsox0{a}
>The following packages will be upgraded:
> libsox-fmt-alsa libsox-fmt-base libsox-fmt-mp3 sox
>4 packages upgraded, 3 newly installed, 1 to remove and 0 not upgraded.
>Need to get 0B/794kB of archives. After unpacking 922kB will be used.
>The following packages have unmet dependencies:
> libsox-fmt-ogg: Depends: libsox0 (>= 14.0.0) but it is not installable
>The following actions will resolve these dependencies:
>
>Remove the following packages:
>libsox-fmt-ogg
>
>Score is 119
>
>Accept this solution? [Y/n/q/?]
>-----------------------------------------
>
>Now Aptitude *is* reaching the right conclusion here, but it *looks*
>like it's decided to disable .ogg support! Only after manually
>inspecting the new package does it become clear that the -base package
>should support this functionality now.
>
>So it would be clearer to the user that it's OK to proceed if it
>indicated somehow that the package it was going to remove was replaced
>by one it was keeping.
>
>ttfn/rjk
2008-08-11 14:15 Daniel Burrows:
>On Sun, Aug 10, 2008 at 08:58:03AM +0100, Richard Kettlewell <rjk at greenend.org.uk> was heard to say:
>> The upgrade here is from 14.0.1-2+b1 of the various sox packages to
>> 14.1.0-1.
>>
>> In this upgrade, libsox-fmt-ogg disappears, its functionality subsumed
>> into libsox-fmt-base. The latter package has a Replaces: header
>> indicating this.
>
> Actually, it doesn't. It has a Replaces: header indicating that it
>overwrites some files in libsox-fmt-ogg, but it doesn't fully replace
>the package (see Policy section 7.6). aptitude shouldn't tell you that
>the package is being replaced, because it might just be that some files
>moved from one package to another.
As the original maintainer said here, the Replaces in the package
relationships simply means that some package takes control of *some*
files from other package, but it doesn't mean that the package as a
whole is replaced by other.
The replaced files can be because of a friendly "take-over" of files
(e.g. foo-common taking files previously from foo), in which case the
package names are often related, but also it can happen in many other
situations.
Sometimes files can be moved from one package to the other, e.g. from
"foo-plugins-bad" to "foo-plugins-good", in which case -good has to add
a Breaks/Replaces on the old version of "foo-plugins-good", but the
upgrade probably involves upgrading both packages at the same time to
the later version, so aptitude saying that "*-good replaces *-bad" while
the user sees that both are upgraded would cause confusion.
> That said, aside from this specific case it probably would be a good
>idea to give the user a note when a package is being fully replaced.
In the RPM world has a Obsoletes relationship that means that one
package fully replaces another, but there's no such thing in the Debian
world at the moment. (I learnt that recently, because APT implements
Obsolete relationships because of apt-rpm).
In summary, I think that trying to show this information *by default*
would clutter the interface, probably would not be able to explain a
good portion of cases and would cause more confusion than clarity in
many cases.
That said, in the prompt
Accept this solution? [Y/n/q/?]
one can press '?' (for general help) or 'o' to explain the solution and
'w libsox-fmt-ogg' for explanations about why packages are currently
kept in the system (maybe this one doesn't help in the case of
upgrades).
I don't have a good example right now with "Replaces", but if I try to
remove aptitude-common, it goes like this:
Accept this solution? [Y/n/q/?] o
aptitude depends upon aptitude-common (= 0.7.7-1)
1) -> Removing aptitude
aptitude-dbgsym depends upon aptitude (= 0.7.7-1)
2) -> Removing aptitude-dbgsym
In the upgrade that you had, it would say something like:
libsox-fmt-base v2 breaks libsox-fmt-ogg v1
libsox-fmt-base v2 replaces libsox-fmt-ogg v1
which I think that it's already more or less what is requested here
(although I don't know if it was implemented in 0.4 / 2008).
Cheers.
--
Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>
More information about the Aptitude-devel
mailing list