의존성 지옥

의존성 지옥(dependency hell)은 특정 버전의 기타 소프트웨어 패키지에 의존성이 있는 소프트웨어 패키지를 설치한 일부 소프트웨어 사용자들의 실망감을 표현하는 용어이다.

일부 기타 패키지가 의존성이 있으나 공유 패키지의 각기 다른, 비호환 버전에 의존하는 공유 패키지나 라이브러리에서 의존성 문제가 발생한다. 공유 패키지나 라이브러리가 단일 버전에서만 설치될 수 있는 경우 사용자는 더 새로운 또는 더 낮은 버전의 의존 패키지를 취득함으로써 문제를 해결할 필요가 있다. 즉, 다른 의존성을 망가트리고 다른 집합의 패키지로 문제를 키울 수 있다.

종류

긴 사슬 의존Long Chains of Dependencies 
응용 프로그램이 의존하고 있는 라이브러리가 다른 라이브러리에 의존하고, 그 라이브러리가 또 다른 라이브러리에 의존하고, 이것이 계속 이어지는 경우. 사용자는 응용 프로그램을 설치하기 위해 라이브러리를 설치해야 하며, 그 라이브러리를 설치하기 위해 다른 라이브러리를 설치해야 하는 작업을 계속해야 한다.

의존 충돌Conflicting Dependencies 
"응용 프로그램 1"이 "가 라이브러리 1.0"에 의존하고, "응용 프로그램 2"가 "가 라이브러리 1.1"에 의존하는 동시에, 서로 다른 버전의 "가 라이브러리"가 동시에 설치될 수 없는 경우. "응용 프로그램 1"과 "응용 프로그램 2"는 동시에 실행되거나, 심지어 동시에 설치될 수 없다.

순환 의존Circular Dependencies 
"응용 프로그램 1"이 "응용 프로그램 2"에 의존하고, "응용 프로그램 2"가 "응용 프로그램 1"에 의존하는 경우. "라이브러리 1.0"에 의존하는 "패키지 관리자 1"이 "라이브러리 1.0"의 버전을 업그레이드하는 도중에 달라진 버전 때문에 작동을 멈춘 경우를 예로 들 수 있다.

같이 보기 

 PBI

각주 

안티패턴
패키지 관리 시스템
버전 관리 시스템
컴퓨터 오류