답변:
이 링크에서 가져온 것처럼 : https://www.debian.org/doc/debian-policy/#document-ch-relationships
5 가지 유형의 종속성이 있습니다.
다섯 가지 종속성 필드의 의미는 다음과 같습니다.
이것은 절대 의존성을 선언합니다. 종속 항목 필드에 나열된 모든 패키지가 올바르게 구성되지 않으면 패키지가 구성되지 않습니다. 종속 패키지가 많은 기능을 제공하기 위해 종속 패키지에 필요한 경우 종속 필드를 사용해야합니다. postinst 또는 prerm 스크립트가 종속 패키지를 실행하기 위해 포장을 풀거나 구성해야하는 경우에도 Depends 필드를 사용해야합니다. postinst configure의 경우 종속 패키지를 먼저 풀고 구성합니다.
prerm 또는 다른 postinst 조치의 경우, 패키지 종속성은 일반적으로 최소한 압축이 풀리지 만 이전 종속성의 업그레이드에 실패한 경우에만 "하프 설치"일 수 있습니다. 마지막으로, postrm 스크립트가 패키지 제거 후 완전히 정리하기 위해 종속 패키지가 필요한 경우 Depends 필드를 사용해야합니다. postrm이 실행될 때 패키지 종속성을 사용할 수 있다고 보장 할 수는 없지만 패키지가 종속성을 선언하면 (특히 postrm remove의 경우) 종속 패키지를 사용할 수있을 가능성이 높습니다. postrm 스크립트는 해당 종속성을 사용할 수없는 경우 종속성이 필요한 작업을 정상적으로 건너 뛰어야합니다.
이 필드는 Depends와 비슷하지만 dpkg가 pre-dependency를 선언하는 패키지의 설치를 시작하기 전에 명명 된 패키지의 설치를 강제로 수행 한다는 점을 제외하고는 의존적입니다. 종속 패키지가 완전히 구성되어 있거나 종속 패키지가 포장을 풀었거나 "반일 구성"상태 인 경우에도 사전 종속성을 충족시킬 수 있습니다. 과거의 어느 시점에서 정확하게 (그리고 이후에 제거되거나 부분적으로 제거되지 않음).
이 경우 이전에 구성한 패키지와 현재 압축이 풀린 버전 또는 "반이 구성된"버전은 모두 사전 종속 필드의 버전 절을 충족해야합니다. 사전 종속성을 선언하는 패키지를 구성하려고 할 때 사전 종속성은 일반 종속성으로 처리됩니다. 종속 패키지가 올바르게 구성된 경우에만 만족되는 것으로 간주됩니다. 그러나 Depends와 달리 Pre-Depends는 순환 종속성을 손상시키지 않습니다. 사전 종속을 준수하는 중에 순환 종속성이 발생하면 설치가 중단됩니다.
preinst 스크립트가 명명 된 패키지에 의존하는 경우에도 사전 종속이 필요합니다. 가능하면이 상황을 피하는 것이 가장 좋습니다. 사전 업그레이드는 시스템 업그레이드 나 설치가 진행중인 업그레이드를 계속하는 데 방해가되는 패키지에 의해서만 사용하는 것이 좋습니다.
작은 버전 :
"의존성"이라는 용어는 "의존적"및 "사전 의존적"관계 (때로는 다른 약한 관계)를 포괄하기 위해 광범위하게 사용될 수 있거나 "의존적"이라는 동의어로 좁게 사용될 수 있습니다.
"종속"과 "사전 의존"패키지 관계의 차이점은 X 가 Y에 의존 하는 경우 X를 구성하기 전에 Y를 완전히 구성해야한다는 것입니다. (구성은 패키지가 일단 파일을 적절한 위치에 풀었을 때 (즉, "설치된") 패키지가 제공하는 소프트웨어를 실제로 사용할 수 있도록 필요한 다른 변경 사항이있는 경우의 설치 단계입니다. HTTP 서버를 구성하려면 www
적절한 기능을 가진 사용자가 /var/www
있고 적절한 권한을 가진 디렉토리 가 있는지 확인해야 합니다. 반면에 X 가 Y에 종속 되어 있으면 X를 설치하기 전에 Y를 먼저 설치하고 (일반적으로) 완전히 구성해야합니다. 설치되었습니다 .
자세한 내용 은 데비안 정책 매뉴얼 7.2 절 을 참조하십시오. 여기서 가장 관련성이 높은 두 섹션을 인용하지만 해당 섹션 (및 7 장에서 더 일반적으로)에 의존성이 작동하는 방식을 설명하는 데 도움이되는 다른 정보가 있습니다.
Depends
이것은 절대 의존성을 선언합니다.
Depends
필드에 나열된 모든 패키지 가 올바르게 구성되지 않으면 패키지가 구성되지 않습니다 (위에서 설명한대로 순환 종속성이없는 경우).
Depends
(가) 달려 온 경우 패키지 기능의 상당한 양의를 제공하기 위해 따라 패키지에 필요한 필드를 사용해야합니다.
Depends
경우 생성 필드도 사용할 수 있어야postinst
또는prerm
스크립트를 필요로하는 의존-에 패키지 압축 해제 또는 실행하기 위해 구성 할 수 있습니다. postinst configure의 경우 종속 패키지를 먼저 풀고 구성합니다. (두 패키지가 모두 종속성 루프에 관련된 경우, 예상대로 작동하지 않을 수 있습니다. 몇 단락 뒤의 설명을 참조하십시오.)prerm
또는 다른postinst
조치 의 경우 패키지 종속성은 일반적으로 최소한 압축이 풀리지 만 종속성의 이전 업그레이드에 실패한 경우 "하프 설치됨"마지막으로, 패키지 제거 후 스크립트가 완전히 정리하기
Depends
위해 종속 패키지가 필요한 경우이 필드를 사용해야합니다postrm
. 패키지 종속성postrm
이 실행될 때 사용 가능하다는 보장은 없지만 , 패키지가 종속성을 선언하면 (특히의 경우postrm remove
) 종속 패키지를 사용할 수있을 가능성이 높습니다 .postrm
스크립트는 우아하게 그 의존성을 사용할 수없는 경우 종속성을 요구하는 작업을 생략해야합니다.
Pre-Depends
이 필드는 다음과 같이 사전 종속성을 선언하는 패키지 설치를 시작하기 전에 명명 된 패키지 설치를
Depends
강제dpkg
로 완료 한다는 점을 제외하고는 같습니다.사전 종속성을 선언하는 패키지의 포장을 풀 려고 할 때 종속 패키지가 완전히 구성 되었거나 종속 패키지가 포장을 풀거나 "하프"에있는 경우에도 사전 종속성을 충족시킬 수 있습니다 -구성됨 "상태 (이전의 특정 시점에서 올바르게 구성되었으며 이후에 제거되거나 부분적으로 제거되지 않은 경우) 이 경우 이전에 구성되었거나 현재 포장이 풀린 버전 또는 "반일 구성"버전 모두
Pre-Depends
필드의 모든 버전 절을 충족해야 합니다.사전 종속성을 선언하는 패키지를 구성 하려고 하면 사전 종속성이 정상으로 처리됩니다
Depends
. 종속 패키지가 올바르게 구성된 경우에만 만족되는 것으로 간주됩니다. 그러나와 달리Depends
,Pre-Depends
깨진 것으로 순환 종속성을 허용하지 않습니다. 존중하려고 시도하는 동안 순환 종속성이 발생Pre-Depends
하면 설치가 중단됩니다.
Pre-Depends
preinst
스크립트가 명명 된 패키지에 의존하는 경우에도 필요 합니다. 가능하면이 상황을 피하는 것이 가장 좋습니다.
Pre-Depends
조기 업그레이드 또는 설치로 인해 시스템이 진행중인 업그레이드를 계속할 수 없게하는 패키지에 의해서만 사용하는 것이 좋습니다.메일 링리스트
Pre-Depends
에서 패키지에 대해 논의하기 전에 패키지에 대한 항목을 지정해서는 안되며 패키지에debian-devel
대한 합의에 도달했습니다. 종속성, 섹션 3.5를 참조하십시오 .