나는 최근 데비안 기반 배포판에는 패키지 관리자를 통해 설치된 모든 응용 프로그램이 사용해야 하는 고정된 공동 종속성 및 라이브러리 모음이 있다는 것을 알게 되었습니다.
이를 Windows와 대조해 보세요. 각 응용 프로그램은 일반적으로 자체 종속성을 제공하므로 Windows OS 설치에는 동일한 종속성/라이브러리의 인스턴스가 여러 번 설치되며 각 응용 프로그램은 해당 응용 프로그램에서 이러한 종속성의 업데이트를 관리해야 합니다. 소유하다.
일부 개발자가 APT 패키지 관리자와 호환되도록 소프트웨어를 개발한다는 것을 알고 있지만 개발자가 "Windows" 방식으로 소프트웨어를 만든 응용 프로그램이 많이 있을 것이라고 생각합니다.
따라서 제 질문은 업스트림 개발자가 번들 종속성이 포함된 대규모 모놀리식 설치를 배포하려는 의도로 소프트웨어를 만든 경우 APT 패키지 관리자가 소스를 다시 작성하여 소프트웨어가 로컬 패키지가 아닌 공동 종속성 컬렉션을 사용하도록 해야 한다는 것입니다. 의존성?
그렇다면 이러한 일이 자주 발생합니까? 이것이 패키지 관리자의 주요 작업입니까?
답변1
따라서 제 질문은 업스트림 개발자가 번들 종속성이 포함된 대규모 모놀리식 설치를 배포하려는 의도로 소프트웨어를 만든 경우 APT 패키지 관리자가 소스를 다시 작성하여 소프트웨어가 로컬 패키지가 아닌 공동 종속성 컬렉션을 사용하도록 해야 한다는 것입니다. 의존성?
모놀리식 설치가 그렇지 않은 한 반드시 그런 것은 아닙니다.갈등기존 라이브러리나 파일 이름을 사용합니다. 즉, 시스템에 이미 /lib/foobar
버전 12가 있고 모놀리식 패키지에 v. 9가 필요하고 번들로 제공되는 경우 해당 모놀리식 패키지는 해당 경로 이름을 사용하기 때문에 filename을 사용하여 v. 9를 foobar
저장할 수 없습니다.foobar
/lib/foobar
~할 수 있었다/lib/foobar_v9
, 또는 아마도 .../monolithic_app_dir/lib/foobar
.
그렇다면 이러한 일이 자주 발생합니까? 이것이 패키지 관리자의 주요 작업입니까?
예, 예방하고 필요한 경우정리하다다양한 수준의 종속성 지옥은 패키지 관리자가 하는 일의 대부분입니다.
답변2
데비안 정책데비안 패키지를 만들 때 프로그램과 함께 번들로 제공되는 라이브러리, 도구 등을 번들에서 해제해야 한다는 것입니다. 또한 데비안 정책에서는 libs를 최소한 런타임 패키지(예: libfoo-version
)와 정적 라이브러리 및 헤더가 포함된 개발 버전(예: libfoo-version-dev
)으로 분할하도록 요구합니다.
자신의 시스템에서 수행하는 작업은 자신의 사업이지만 모놀리식 애플리케이션을 패키징하는 데비안 개발자(DD)는 번들을 해제해야 합니다. 이는 데비안의 기존 라이브러리에 의존하거나 아직 존재하지 않는 경우 패키지를 만드는 것을 의미합니다. .
다른 배포판에는 다른 정책이 있을 수 있지만 대부분은 공식 저장소의 패키지를 번들 해제해야 합니다. 왜냐하면 번들링은 패키징의 요점을 무너뜨리고 특정 라이브러리를 사용하는 모든 프로그램에 라이브러리 보안 업데이트를 적용하는 등의 작업을 더 어렵게 만들기 때문입니다.