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 around shared packages or libraries on which several other packages have dependencies but where 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:
; Many dependencies
; Long chains of dependencies
; Conflicting dependencies
; Circular dependencies
; Package manager dependencies
;Diamond dependency

Solutions

; Version numbering
;Private per application versions
; Side-by-side installation of multiple versions
; Smart package management
; Installer options
; Easy adaptability in programming
; Strict compatibility requirement in code development and maintenance
; Software appliances
; Portable applications

Platform-specific

On specific computing platforms, "dependency hell" often goes by a local specific name, generally the name of components.