[Aptitude-devel] Bug#687700: aptitude returns some reverse-recommends when searching for reverse-depends

Manuel A. Fernandez Montecelo manuel.montezelo at gmail.com
Wed Jan 13 20:21:08 UTC 2016


Control: tags -1 - confirmed + moreinfo


Hi Andrei,

2012-09-15 11:09 Andrei POPESCU:
>Package: aptitude
>Version: 0.6.8.1-1
>Severity: normal
>
>Dear Maintainer,
>
>See below output.
>
>$ aptitude search '?reverse-recommends(lxde)' | grep dm
>p   gdm                             - GNOME Display Manager
>p   gdm3                            - Next generation GNOME Display Manager
>p   kdm                             - KDE Display Manager for X11
>i A lightdm                         - simple display manager
>p   wdm                             - WINGs Display Manager - an xdm replacement
>p   xdm                             - X display manager
>$ aptitude search '?reverse-depends(lxde)' | grep dm
>p   gdm3                            - Next generation GNOME Display Manager
>i A lightdm                         - simple display manager
>
>For unknown reasons aptitude returns the two display managers which are
>only recommended by lxde when searching for reverse-depends. This does
>not happen on stable.

Contrary to the previous replies in the bug report, the reason seems to
be unrelated:

  $ aptitude search -F '%p' '?reverse-recommends(lxde)' | grep dm
  gdm3
  kdm
  lightdm
  lightdm:i386
  lxdm
  sddm
  wdm
  xdm
  
  $ aptitude search -F '%p' '?reverse-depends(lxde)' | grep dm
  lightdm
  
  $ aptitude search -F '%p' '?reverse-depends(^lxde$)' | grep dm
  
  $ aptitude search -F '%p' '?reverse-depends(^task-lxde-desktop$)' | grep dm
  lightdm

  $ aptitude search -F '%p' '?reverse-recommends(^education-desktop-lxde$)' | grep dm
  lightdm


That is, the problem is that "?reverse-*(lxde)" matches any package
*containing* "lxde" in the name, not the *exact match* "lxde".  These
are:

  $ aptitude search -F '%p' '?name(lxde)'
  education-desktop-lxde
  education-desktop-lxde:i386
  live-image-lxde-desktop
  lxde
  lxde-common
  lxde-core
  lxde-icon-theme
  lxde-settings-daemon
  lxde-settings-daemon:i386
  task-lxde-desktop

Of all of these packages, only task-lxde-desktop *depends* on lightdm,
and education-desktop-lxde *recommends* lightdm (same as "lxde"
package).  When the first of the queries is grepped by "dm", the result
is the same, because lightdm is included in the set of Display Managers.
But when not grepped by "dm":

  $ aptitude search -F '%p' '?reverse-recommends(^lxde$)' | wc -l
  64

  $ aptitude search -F '%p' '?reverse-recommends(lxde)' | wc -l
  179

Because the second includes all packages recommended by all packages
containing "lxde" in the name.


On the other hand, alternative dependencies, as speculated in previous
replies, seem to work fine:

  $ aptitude search -F '%p' '?reverse-depends(^aptitude$)'
  aptitude-common
  libapt-pkg5.0
  libboost-filesystem1.58.0
  libboost-iostreams1.58.0
  libboost-system1.58.0
  libc6
  libcwidget3v5
  libgcc1
  libncursesw5
  libsigc++-2.0-0v5
  libsqlite3-0
  libstdc++6
  libtinfo5
  libxapian22v5
  
  $ aptitude search -F '%p' '?reverse-recommends(^aptitude$)'
  aptitude-doc
  aptitude-doc:i386
  aptitude-doc-cs
  aptitude-doc-en
  aptitude-doc-en:i386
  aptitude-doc-es
  aptitude-doc-fi
  aptitude-doc-fr
  aptitude-doc-it
  aptitude-doc-ja
  aptitude-doc-ru
  libparse-debianchangelog-perl
  sensible-utils
  sensible-utils:i386
  
  $ apt-cache show aptitude | grep -E '^(Recommends|Depends):'
  Depends: aptitude-common (= 0.7.5-3), libapt-pkg5.0 (>= 1.1), libboost-filesystem1.58.0, libboost-iostreams1.58.0, libboost-system1.58.0, libc6 (>= 2.14), libcwidget3v5, libgcc1 (>= 1:3.0), libncursesw5 (>= 6), libsigc++-2.0-0v5 (>= 2.6.1), libsqlite3-0 (>= 3.6.5), libstdc++6 (>= 5.2), libtinfo5 (>= 6), libxapian22v5
  Recommends: aptitude-doc-en | aptitude-doc, libparse-debianchangelog-perl, sensible-utils


So I think that in the end this is just a result of the behaviour,
sometimes inducing to mistakes like this, that what goes between
parentheses is a pattern and not an exact name.


The fact that this didn't happen in stable at the time and other
differences is most probably because the package causing these to be
included (task-lxde-desktop) was changed at the time.  See mentions of
gdm3 and changing dependencies in the changelog, for example:

  ================================================================
  tasksel (3.13) unstable; urgency=low

  [ Christian Perrier ]
    * Replace gdm3 by lightdm in lxde-desktop task. Closes: #683345

  [ Joey Hess ]
  * Don't force browser-plugin-gnash onto desktops that don't themselves
    pull it in. This means gnome still installs it, but kde, xfce,
    and lxde do not. Closes: #655841
  * Use dh_perl -d, as tasksel does not need perl, only perl-base.
    Closes: #686021
  * Add gstreamer0.10-alsa to task-xfce-desktop, as a workaround for
    bug #651495, which was resulting in the mixer being broken.

  [ Debconf translations ]
  * Brazilian Portuguese (Adriano Rafael Gomes).  Closes: #685181

   -- Joey Hess <joeyh at debian.org>  Sun, 02 Sep 2012 20:51:05 -0400
  ================================================================

  tasksel (3.12) unstable; urgency=low

  [ Andrew Lee (李健秋) ]
  * Really depending on gdm3 in task-lxde-desktop (Closes: #680519).
  ...  
  ================================================================


Lastly, have you observed other problems related with this, that cannot
be explained by the reasons above?


Cheers.
-- 
Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>



More information about the Aptitude-devel mailing list