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 
<[email protected]> 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 <[email protected]>

_______________________________________________
Aptitude-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/aptitude-devel

Reply via email to