The following graph shows the size of the largest strongly connected component during a native bootstrapping scenario which starts only with Essential:yes, build-essential, debhelper and apt. The larger the strongly connected component, the harder it is to make the dependency graph acyclic because more modifications to packages are needed to break dependency cycles.

The data was generated using Packages and Sources files from, doing the analysis from 2005-03-12 to now, using a 5-day interval.

Dependency graphs have been generated in four different ways.

default universe (red plus)Installation sets are chosen in an arbitrary manner from an unmodified Debian Sid repository.

default universe + opt. IS (green X)Like above but installation sets are chosen so that the amount of unavailable binary packages in them is minimized.

optimal universe (blue star)Installation sets are chosen in an arbitrary manner from a subset of Debian Sid which has been optimized to contain the minimum number of source packages possible while still being able to bootstrap build-essential.

universe without disjunctions (cyan square)Installation sets are chosen in an arbitrary manner from a Debian Sid repository that was modified in the following way: In binary packages, virtual packages were removed from disjunctions with real packages. In source packages, all but the first alternative was removed from each disjunction (same as sbuild does it).

Raw data:

Missing data points in the graph indicate a situation without a solution.

Notable events:

The data used to generate this page was computed using botch, the bootstrap/build ordering tool chain. The source code of botch can be redistributed under the terms of the LGPL3+ with an OCaml linking exception. The source code can be retrieved from

The html page was generated by code which can be retrieved from and which can be redistributed under the terms of the AGPL3+

For questions and bugreports please contact j [dot] schauer [at] email [dot] de.