Package Manager 창에서 작업하는 경우 다양한 소스(레지스트리, 로컬 폴더, 타르볼 및 Git URL)에서 패키지를 설치할 수 있습니다. 하지만 패키지 관리자가 이러한 소스에서 패키지를 원활하게 설치하지만, 먼저 일련의 계산을 통해 설치할 버전 그리고 이 버전을 지원하기 위해 설치할 다른 패키지 및 버전을 결정해야 합니다.
Package Manager 창에서 설치할 패키지 버전을 선택하면 프로젝트 매니페스트에 종속성 을 추가합니다. 이는 프로젝트가 작동하기 위해 특정 패키지의 특정 버전이 필요하다는 선언입니다. 프로젝트 매니페스트에 나타나는 종속성을 “직접” 종속성이라고 합니다.
또한 패키지는 작동하기 위해 다른 패키지를 필요로 합니다. 이러한 패키지를 “간접” 또는 중간적 종속성이라고 부릅니다. 패키지 개발자는 개발 과정에서 이러한 종속성을 패키지 매니페스트에 추가합니다. 예를 들어 아래 다이어그램에서 alembic@1.0.7
패키지에는 timeline@1.0.0
패키지에 대한 종속성이 있으므로, 타임라인 패키지는 “간접 ” 종속성입니다. 반면에 프로젝트에는 cinemachine@2.6.0
및 alembic@1.0.7
패키지에 대한 종속성이 있으므로, 둘 다 “직접” 종속성입니다.
When you add a package version as a dependency, that version is not necessarily the version that the Package Manager installs, because it has to consider all of the dependencies in your project, whether direct or indirect. For example, in this case, the Settings Manager package requested was version 1.0.1, but the installed version is actually version 1.0.3 because another package depended on the higher version, as indicated in the information message (A):
패키지 관리자는 한 번에 하나의 패키지 버전만 설치할 수 있으므로, 프로젝트에 대한 모든 직접 및 간접 종속성 리스트인 종속성 그래프를 구성해야 합니다. 종속성 그래프는 설치할 각 패키지의 버전을 결정합니다.
패키지 관리자가 모든 버전 충돌을 성공적으로 해결하면 잠금 파일에 해결 방법을 저장하여 결정론적 분명성을 보장(매번 동일한 패키지가 안정적으로 설치됨)하고, 종속성 그래프를 다시 계산하는 데 필요한 시간과 리소스를 줄입니다.