의존성과 사전 의존의 차이점은 무엇입니까?


답변:


20

이 링크에서 가져온 것처럼 : 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 스크립트가 명명 된 패키지에 의존하는 경우에도 사전 종속이 필요합니다. 가능하면이 상황을 피하는 것이 가장 좋습니다. 사전 업그레이드는 시스템 업그레이드 나 설치가 진행중인 업그레이드를 계속하는 데 방해가되는 패키지에 의해서만 사용하는 것이 좋습니다.

작은 버전 :

  • 모두 따라사전은-따라설치 전에 패키지에 필요한 종속성을 언급하지만 종속성이 필요한 패키지로 시작하기 전에 종속성 패키지의 설치 및 구성을 강제로 종속시킵니다. dpkg는 모든 사전 종속 패키지가 처리 될 때까지 기본 패키지의 포장을 풀지 않습니다. 의존성 패키지와 의존성 패키지의 순서는 중요하지 않습니다. 사전 종속을 통해 사전 종속 패키지가 구성 및 설치되었는지 여부와이를 확인합니다. 이것이 없으면 주 패키지는 포장을 풀거나 구성하거나 설치하지 않아도됩니다. 기본 패키지에 대한 작업 프로세스를 시작하기 전에 종속성이 설치되어 있어야합니다. 그렇지 않은 경우 계속 진행하기 전에 먼저 다운로드 / 구성 / 설치해야합니다.

2
참고도 있다는 것을 방지 의존성 등의 충돌과 휴식으로가. Build-Depends와 같은 종속성을 빌드하십시오.
Alexis Wilke

3

"의존성"이라는 용어는 "의존적"및 "사전 의존적"관계 (때로는 다른 약한 관계)를 포괄하기 위해 광범위하게 사용될 수 있거나 "의존적"이라는 동의어로 좁게 사용될 수 있습니다.

"종속"과 "사전 의존"패키지 관계의 차이점은 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-Dependspreinst스크립트가 명명 된 패키지에 의존하는 경우에도 필요 합니다. 가능하면이 상황을 피하는 것이 가장 좋습니다.

Pre-Depends 조기 업그레이드 또는 설치로 인해 시스템이 진행중인 업그레이드를 계속할 수 없게하는 패키지에 의해서만 사용하는 것이 좋습니다.

메일 링리스트 Pre-Depends에서 패키지에 대해 논의하기 전에 패키지에 대한 항목을 지정해서는 안되며 패키지에 debian-devel대한 합의에 도달했습니다. 종속성, 섹션 3.5를 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.