debtree — package dependency graphs on steroids

Introduction

Example: debconf

  1. Graph from apt-cache (for comparison)
  2. Basic graph (only hard dependencies and conflicts)
  3. Basic graph with Recommends
  4. Basic graph with Recommends and Suggests
  5. Basic graph with Recommends and showing alternatives
  6. Default graph (showing Recommends, alternatives and versions)
  7. Default graph with Suggests
  8. Default graph with Suggests and versioned Conflicts
  9. Default graph (rotated)

Shown are: Pre-Depends, Depends, unversioned Conflicts and relevant Provides.

This is one of the most basic graphs that can be generated. Only the Conflicts and the virtual package debconf-2.0 that debconf provides could have been suppressed.

The graph also shows the full set of packages that provide debconf-2.0. The square brackets around debconf indicate that the package is also displayed elsewhere in the graph, while the braces around cdebconf indicate that the dependency info for that package is not included in the graph.

perlapi-5.10.0 is a virtual package provided by perl-base. A virtual package is only displayed if it is provided by the requested package, or if it is a dependency or conflict from some package included in the graph.

Some packages, like libc6 and zlib1g, have been excluded from all graphs as so many packages depend on them that they only cause clutter without adding any real information; it would be nice to show them in some other way.

The reddish shade of debconf-tiny means that the package is unknown (does not exist in the package database).

Note the circular dependency between debconf and debconf-i18n.

$ debtree --no-recommends --no-alternatives --no-versions debconf


Dependency graph for debconf
Generated .dot file: DOT
Full-sized images: PS | PNG | SVG

Equivalent graph for aptitude