Dependency hell
Dependency hell is a colloquial term for the frustration of some software users who have installed software packages which have dependencies on specific versions of other software packages.
The dependency issue arises when several packages have dependencies on the same shared packages or libraries, but they depend on different and incompatible versions of the shared packages. If the shared package or library can only be installed in a single version, the user may need to address the problem by obtaining newer or older versions of the dependent packages. This, in turn, may break other dependencies and push the problem to another set of packages.
Problems
Dependency hell takes several forms:Solutions
Strict compatibility requirement in code development and maintenance
Platform-specific
On specific computing platforms, dependency hell often goes by a local specific name, generally the name of components.- DLL Hell – a form of dependency hell occurring on 16-bit Microsoft Windows.
- Extension conflict – a form of dependency hell occurring on the classic Mac OS.
- JAR hell – a form of dependency hell occurring in the Java [virtual machine|Java Runtime Environment] before build tools like Apache Maven solved this problem in 2004.
- RPM hell – a form of dependency hell occurring in the Red Hat distribution of Linux and other distributions that use RPM as a package manager.