"go get -u" 명령을 사용할 때 동일한 패키지의 두 버전이 다운로드되는 이유를 PHP 편집기에서 설명합니다. 이 문제의 원인은 go mod가 작동하는 방식에 있습니다. go mod는 Go 언어 버전 1.11에 도입된 종속성 관리 도구로, 프로젝트의 go.mod 파일을 기반으로 종속성 패키지를 자동으로 다운로드하고 관리합니다. "go get -u" 명령을 사용하면 go.mod 파일에서 종속성 패키지 버전을 확인하고 최신 버전을 다운로드하려고 시도합니다. 그러나 일부 패키지의 버전 업데이트는 다른 패키지의 다른 버전에 따라 달라질 수 있으므로 go mod는 종속성을 충족하기 위해 두 가지 버전의 패키지를 다운로드하므로 동일한 패키지의 두 가지 버전이 다운로드됩니다.
저는 go get -u
来获取依赖于 golang.org/x/[email protected]
的软件包。我注意到它首先下载 golang.org/x/[email protected]
然后下载 golang.org/x/[email protected]
을 사용합니다.
그럼 달려요 go clean -modcache
和 go get golang.org/x/text
,它下载了 golang.org/x/text
的 v0.4.0
,然后再次 go get -u entgo.io/ent
。这次 go 没有下载 golang.org/x/[email protected]
그렇다면 로컬에서 최신 버전을 사용할 수 없는데 왜 go get -u
이전 버전과 최신 버전을 모두 다운로드하고, 최신 버전을 로컬에서 사용할 수 있는데 왜 이전 버전을 다운로드하지 않습니까?
2단계 프로세스이기 때문입니다
프로그래밍 관점에서 이러한 항목을 "최신 종속성 가져오기"라는 단일 초점으로 병합할 타당한 이유가 없습니다.
go 명령 문서에서:
-u 플래그는 명령줄에 명명된 패키지에 대한 종속성을 제공하는 업데이트 모듈에 사용 가능한 경우 최신 부 또는 패치 버전을 사용하도록 지시합니다.
이것은 -u
가져온 패키지의 모듈이 아니라 가져온 패키지가 의존하는 모듈을 구체적으로 처리한다는 의미입니다.
게다가 -u
与将 v0
版本中的任何更改视为主要版本更改的 Go 惯用法无关,因此不能出于原则轻易推荐使用 -u
는 v0
버전의 변경 사항을 주요 버전 변경으로 처리하는 Go 관용구와 아무런 관련이 없는 것으로 보이므로 원칙적으로 사용을 쉽게 권장할 수는 없습니다. golang.org/x/test
x/text 버전이 1.0.0이 될 때까지 부 버전은 주요 버전으로 간주됩니다. 따라서 0.1.0에서 0.2.0으로 가는 것은 주요 버전 업그레이드로 간주됩니다. 🎜
위 내용은 -u를 사용할 때 왜 동일한 패키지의 두 가지 버전을 다운로드합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!