종속성 전파를 어떻게 이해해야 합니까? [폐쇄]

종속성 전파를 어떻게 이해해야 합니까? [폐쇄]

https://nixos.org/manual/nixpkgs/stable/#ssec-stdenv-dependent-reference설명하다

다른 전이적(비직접) 다운스트림 종속성도 직접 종속성으로 요구하는 경우 종속성이 전파된다고 합니다.

"다운스트림" 및 "업스트림" 종속성은 무엇을 의미합니까?

"간접" 종속성과 "직접" 종속성은 무엇입니까?

종속성 개념이 패키지 종속성 간에 종속성을 전파합니까?

예나 다이어그램으로 설명할 수 있나요?

답변1

"다운스트림" 및 "업스트림" 종속성은 무엇을 의미합니까?

에서와 같이MC68020의 답변, 패키지 A, B, C를 사용하겠습니다. 여기서 A는 B에 종속되고 B는 다시 C에 종속됩니다.

A → B → C (종속 관계 측면에서).

"업스트림" 및 "다운스트림"이라는 용어는 변화하는 흐름을 나타냅니다.

  • 일반적으로 배포 환경에서 "업스트림"은 일반적으로 패키지에 제공된 프로젝트의 원본 소스를 나타냅니다. 거기에서 변경 사항이 적용된 다음 패키지가 업데이트되어 업데이트된 프로젝트를 제공합니다.

  • 특히 종속성의 맥락에서 C가 변경되면 B도 변경해야 하고 A도 변경해야 할 수 있습니다. 따라서 C는 B의 업스트림 종속성, B는 A의 업스트림 종속성, A는 B의 다운스트림 종속성, B는 C의 다운스트림 종속성입니다.

"간접" 종속성과 "직접" 종속성은 무엇입니까?

직접 종속성은 직접 종속성을 의미합니다. B는 A의 직접 종속성이고 C는 B의 직접 종속성입니다. 간접 종속성은 전이적 종속성입니다. A는 B 때문에 C에만 종속되므로 C는 A의 간접 종속성입니다. A가 더 이상 B에 종속되지 않도록 변경되면 더 이상 C에 종속되지 않습니다.

종속성 개념이 패키지 종속성 간에 종속성을 전파합니까?

종속성 반영 전파다양성종속성 트리에서. 에서 시작하다

A → B → C

위에서 A가 C의 일부 기능을 사용하도록 변경되면 C에 직접 종속됩니다.

A → B → C
A → C

C의 관점에서 볼 때 이전의 간접 종속성 A는 이제 직접 종속성으로 필요하므로 종속성이 "전파"되었습니다. 전파는 C 또는 종속성 트리에 의존하지 않으며 A의 변경 결과입니다.

이러한 변경 사항은 눈에 띄지 않을 수 있으므로 기록해 두는 것이 중요합니다. B가 C에 의존하기 때문에 A는 C의 기능에 "무료"로 액세스할 수 있습니다. 따라서 A가 C를 직접 사용하기 시작하면 패키징 변경이 필요하지 않으며 A는 평소대로 계속 구축합니다. 그러나 A의 직접 종속성 목록은 이제 불완전하며, B가 나중에 C에 대한 종속성을 삭제하면 A에서 아무것도 변경되지 않았더라도 A는 빌드를 중지합니다.

답변2

간단히 말해 A, B, C는 각각 패키지 A, 패키지 B, 패키지 C를 나타냅니다.

A가 B에 의존하는 경우 A의 일부 코드가 B에 정의된 외부 참조를 가져오는 것을 의미합니다.

A가 B에 의존하고 A 자체가 C에 의존한다고 가정합니다.

B의 경우 A는 다음과 같이 말할 수 있습니다.상류(어떤 사람들은 A라고 부르기도 합니다.역방향 의존성나)와 다하류.

B 그렇다고 할 수 있다.즉각적인A의 의존성.
그러나 B는 C에 의존하므로 C는 다음과 같다고 말할 수 있습니다.간접적인 종속성. 이 정확한 경우 C는 A에 대한 외부 참조를 정의하지 않기 때문입니다. A는 C의 모든 미덕에 의존합니다.전이성(수학적 의미에서 A -> (어쨌든 B -> C => A -> C와 관련됨)

이제 A도 C에 의존한다고 가정해 보겠습니다. glibc를 가장 일반적인 예로 생각할 수 있습니다. (A가 의존하는 다른 라이브러리도 glibc에 의존하기 때문에 A의 일부 코드는 일부 glibc 함수를 호출할 가능성이 높습니다.

그러면 C는 A와 B의 직접적인 종속성이 됩니다. 이 경우 C에 대한 종속성을 호출합니다.퍼뜨리는.

어려운 상황이 발생할 수 있으며 이로 인해 일부 결과가 발생할 수 있습니다.

모호한/혼란스러운

계산 계산 : A -> B -> C -> D -> B 일 때

A의 직접 의존성인 B는 D의 직접 의존성이기도 하고, D는 B의 간접 의존성이기도 합니다. 결과적으로 (OP에 링크된 페이지 참조에서와 같이)

종속성의 전이적 폐쇄

관련 정보