문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Linux (문단 편집) ==== 의존성 관리 ==== [[Linux]][* [[Android]] 제외. [[Android]]는 [[Linux]] [[커널]]만 가져다 썼을 뿐 사실상 다른 [[OS]]라 봐도 무방하다.] 배포판에서 패키지들을 관리할 때에는 특히 의존성 문제를 신경써야 한다. 전통적으로, [[Linux]]에서 [[프로그램]]을 설치하면 그 해당 [[프로그램]]만 딱 설치하며, 부속품 격인 '의존 패키지들[* 영문에서 주로 'dependencies'라 하는 그것. 해당 프로그램의 구동에 필요한 부속 [[라이브러리]] 등을 의미한다.]'은 별도로 설치해야 한다.[* 상술한 [[소스코드]] 직접 설치 방식이 그렇다.] 그러다 보니 어떤 [[프로그램]]을 설치하려면 의존 패키지들까지 일일이 따로 구해서 설치하는 불편함이 존재했었다. 이를 해결하기 위해 등장한 것이 시스템 패키지 매니저이다. 시스템 패키지 매니저의 출현은 이러한 의존성 문제를 대신 해결해주었다. 또한 [[Linux]]에서는 [[Microsoft Windows|윈도우]]나 [[macOS]]와 달리, 프로그램들이 서로 의존성을 공유한다. 이것은 저장공간 낭비를 줄인다는 장점은 있지만 서로 다른 의존성을 요구하는 프로그램들을 동시에 설치할 수 없거나, 프로그램 한번 업데이트했더니 다른 프로그램이 먹통이 된다거나 하는 치명적인 문제가 있다. 또한 각 배포판마다 다른 의존 패키지가 필요하여 각 배포판마다 설치 파일을 별도로 제작해야 하는 파편화도 발생시킨다. 따라서 대부분의 Linux 배포판들은 의존 패키지들을 해당 의존성을 필요로 하는 패키지 내에 명시하고, 의존성이 모두 맞춰진 프로그램 세트를 구할 수 있도록 각 배포판 버전마다 따로 저장소를 만들어 두어 각 프로그램마다 필요한 버전을 가리키도록 하는 것으로 문제를 해결한다.[* [[Gentoo Linux]], [[Arch Linux]], [[Debian]] sid 등 특별한 릴리즈 주기 없이 rolling-release를 사용하는 배포판은 모든 프로그램과 구성요소를 최신 버전으로 유지하여 의존성을 해결한다. 만약 한 의존 패키지의 버전이 올라가 이를 의존성으로 두는 패키지들이 더 이상 그 의존성을 해결할 수 없는 상황이 되면, 그 패키지들을 새 의존 패키지 버전에 의존성을 두도록 모두 다시 컴파일한다.] 다만 이러한 의존성 처리 방식이 비효울적이라는 비판이 있었고, 그래서 최근에 등장한 것이 Flatpak, Snap, AppImage, ~~그리고 [[Docker]]~~[* Docker의 경우 가상화 기술이긴 해도 패키지 매니저나 앱스토어는 아니다보니, 앱 설치를 위해 의존성 관리를 최적화한 앞의 것들과는 차이가 있다.]이다. 이들은 기존의 시스템에 설치되어 있는 패키지들과는 독립적으로 각 프로그램의 의존성을 관리하여 앞서 나온 의존성 관련 문제들을 해결한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기