A nice picture of (dependency) hell

"Dependency hell" refers the difficulty that arise when installing a software package that requires a lot of other software packages to be installed. The required software packages (or dependencies) may themselves require other software packages to be installed.

To give a better idea of why this can be difficult, I created the following graph.
circle graph of software dependencies
63988 Dependencies between 14319 software packages
This graph shows the dependencies between software packages in the Gentoo Linux operating system. In total there are 14319 packages with 63988 dependencies between them!

Packages are drawn on the circumference of the circle and a dependency is indicated by a line draw from one package to another. The color of a package is randomly generated, while the color of a line is determined by the package that is required by the other packages.

Every package has a line starting on the rim of the circle drawn radially outwards. The length of the line is determined by the amount of other packages that depend on the package.

Here is a closeup of a small part of the graph:
circle graph of software dependenciesThe most common dependencies are development tools. This is a list of the 15 packages with the most reverse dependencies:

Package# of reverse dependencies
dev-lang/perl1559
dev-util/pkgconfig1195
dev-lang/python1047
x11-libs/gtk+1042
sys-devel/libtool950
app-arch/unzip878
sys-devel/automake818
sys-devel/autoconf766
dev-libs/glib652
x11-libs/qt-gui612
virtual/jdk588
sys-apps/sed575
x11-libs/libX11545
app-admin/eselect-python496
dev-util/cmake455

The graph was created with data obtained from the Gentoo Portage tree and drawn using the Python Image Libray (PIL).

10 comments:

Unknown said...

Cool graph boeta, het jy dit gemaak?

David A R Kemp said...

Do you have code or data you're willing to share?

Sibudi said...

dependency is making me sick >.<

d27 said...

@David I'm a little embarrassed of the code, but drop me a mail and I'll send you the code and the data

jhoger said...

It's not "dependency hell" unless it fails :-)

Dexter T. said...

How about generating a tree instead?

Anonymous said...

Sorry, I wanted to ask about this image: what is the software package located at 90 degrees / due East / 3:00?

d27 said...

@Anonymous I can't really make out myself :) , but I think it's an artifact that makes that package seem interesting. In that graph I drew dependencies in order, so the last package with all its dependency lines are drawn on top.

Anonymous said...

I stumbled on to this website after a rough bout with dependency hell and looking for a way to blow off steam. Do you have a larger version of your graph? I'd like to hang it in my office.

d27 said...

@groundzero sure, just drop me a mail and I can email you a higher resolution copy