[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#329253: apt-cache rdepends --recurse does not always recurse far enough



Package: apt
Version: 0.5.28.6
Severity: normal

"apt-cache rdepends --recurse" does not always recurse far enough up the dependency tree and output everything relevant.  (Note that "apt-cache depends --recurse" does, as far as I can tell, always recurse far enough and give the correct information.)

From just running a few examples, it appears that the command
(apt-cache rdepends --recurse) gives the correct result 75 to 80 percent of the time.  Here is
an example of where it gives incorrect results:

~$ apt-cache show henplus | grep Depends
Depends: kaffe-jthreads | java-virtual-machine, libreadline-java (>= 0.7.3)

~$ apt-cache show libreadline-java | grep Depends
Depends: libc6 (>= 2.3.2.ds1-21), libedit2 (>= 2.5.cvs.20010821-1), libncurses5 (>= 5.4-1), libreadline4 (>= 4.3-1), gij | java1-runtime | java2-runtime

So, we see that henplus depends on libreadline-java, which depends on libc6.  This is also conveyed
by:

~$ apt-cache depends --recurse henplus | grep libc6 | wc -l
874

However:

~$ apt-cache rdepends libc6 --recurse | grep libreadline-java
libreadline-java
libreadline-java
libreadline-java
libreadline-java
libreadline-java
libreadline-java
|libreadline-java
|libreadline-java

~$ apt-cache rdepends libc6 --recurse | grep henplus
[Exit 1]
So, running rdepends --recurse for libc6 follows part of the way up the dependency chain, but not all the way up to henplus.

I've reproduced this on my i386 box as well as on a powerpc box. In case it helps, here is an example from the powerpc. Note that mps300-primarybase and mps300-profile are packages
developed in-house.  mps300-profile depends on mps300-primarybase, which depends on procps.

mps300:~# apt-cache rdepends procps --recurse
procps
Reverse Depends:
psmisc
procps
procps
mps300-primarybase
psmisc
Reverse Depends:
procps
mps300-primarybase

Note in the above that mps300-primarybase is shown, but never recursed so that mps300-profile is never output, but it should be. However, mps300-primarybase's rdepends is fine:

mps300:~# apt-cache rdepends mps300-primarybase --recurse
mps300-primarybase
Reverse Depends:
mps300-profile
mps300-profile
Reverse Depends:

The psmisc package that is mentioned in the rdepends of procps but is not fully followed up to
mps300-profile is correctly recursed when done by itself:

mps300:~# apt-cache rdepends psmisc --recurse
psmisc
Reverse Depends:
procps
mps300-primarybase
mps300-primarybase
Reverse Depends:
mps300-profile
mps300-profile
Reverse Depends:
procps
Reverse Depends:
psmisc
procps
procps
mps300-primarybase


Thanks,
Greg

-- Package-specific info:

-- apt-config dump --

APT "";
APT::Architecture "i386";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Get "";
APT::Get::Assume-Yes "true";
APT::Get::Fix-Missing "true";
APT::Get::Show-Upgraded "true";
APT::Get::Purge "true";
APT::Get::List-Cleanup "true";
APT::Get::ReInstall "false";
Dir "/";
Dir::State "var/lib/apt/";
Dir::State::lists "lists/";
Dir::State::cdroms "cdroms.list";
Dir::State::userstatus "status.user";
Dir::State::status "/var/lib/dpkg/status";
Dir::Cache "var/cache/apt/";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";
Dir::Etc "etc/apt/";
Dir::Etc::sourcelist "sources.list";
Dir::Etc::vendorlist "vendors.list";
Dir::Etc::vendorparts "vendors.list.d";
Dir::Etc::main "apt.conf";
Dir::Etc::parts "apt.conf.d";
Dir::Etc::preferences "preferences";
Dir::Bin "";
Dir::Bin::methods "/usr/lib/apt/methods";
Dir::Bin::dpkg "/usr/bin/dpkg";
DPkg "";
DPkg::Pre-Install-Pkgs "";
DPkg::Pre-Install-Pkgs:: "/usr/sbin/dpkg-preconfigure --apt || true";
DPkg::Options "";
DPkg::Options:: "--abort-after=4711";
DPkg::Options:: "--force-confnew";

-- (no /etc/apt/preferences present) --


-- /etc/apt/sources.list --

#
# NOTE: This will be installed onto an installed machine.
#	It is not used by FAI (which uses
#	  files/fai/sources.list


deb	http://deb-proxy-mirror.inrealm.net/debian/ sarge main contrib non-free
deb	http://deb-proxy-mirror.inrealm.net/debian/ sid	  main contrib non-free


-- System Information:
Debian Release: 3.1
 APT prefers unstable
 APT policy: (500, 'unstable'), (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.11-1-686
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)

Versions of packages apt depends on:
ii  libc6                       2.3.2.ds1-21 GNU C Library: Shared libraries an
ii  libgcc1                     1:3.4.3-12   GCC support library
ii  libstdc++5                  1:3.3.5-12   The GNU Standard C++ Library v3

-- no debconf information

~$ dpkg --status apt
Package: apt
Status: install ok installed
Priority: important
Section: base
Installed-Size: 3664
Maintainer: APT Development Team <deity@lists.debian.org>
Architecture: i386
Version: 0.5.28.6
Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
Provides: libapt-pkg-libc6.3-5-3.3
Depends: libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.4.1-3), libstdc++5 (>= 1:3.3.4-1)
Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc
Description: Advanced front-end for dpkg
This is Debian's next generation front-end for the dpkg package manager.
It provides the apt-get utility and APT dselect method that provides a
simpler, safer way to install and upgrade packages.
.
APT features complete installation ordering, multiple source capability
and several other unique features, see the Users Guide in apt-doc.



Reply to: