"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.
|
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:
The 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/perl | 1559 |
dev-util/pkgconfig | 1195 |
dev-lang/python | 1047 |
x11-libs/gtk+ | 1042 |
sys-devel/libtool | 950 |
app-arch/unzip | 878 |
sys-devel/automake | 818 |
sys-devel/autoconf | 766 |
dev-libs/glib | 652 |
x11-libs/qt-gui | 612 |
virtual/jdk | 588 |
sys-apps/sed | 575 |
x11-libs/libX11 | 545 |
app-admin/eselect-python | 496 |
dev-util/cmake | 455 |
The graph was created with data obtained from the Gentoo Portage tree and drawn using the Python Image Libray (PIL).