>백엔드 개발 >Golang >-u를 사용할 때 왜 동일한 패키지의 두 가지 버전을 다운로드합니까?

-u를 사용할 때 왜 동일한 패키지의 두 가지 버전을 다운로드합니까?

WBOY
WBOY앞으로
2024-02-12 22:00:11660검색

为什么 go get 在使用 -u 时会下载同一包的两个版本

"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 -modcachego get golang.org/x/text ,它下载了 golang.org/x/textv0.4.0 ,然后再次 go get -u entgo.io/ent 。这次 go 没有下载 golang.org/x/[email protected]

그렇다면 로컬에서 최신 버전을 사용할 수 없는데 왜 go get -u 이전 버전과 최신 버전을 모두 다운로드하고, 최신 버전을 로컬에서 사용할 수 있는데 왜 이전 버전을 다운로드하지 않습니까?

해결책

2단계 프로세스이기 때문입니다

  1. 종속성 가져오기
  2. 종속성 업데이트

프로그래밍 관점에서 이러한 항목을 "최신 종속성 가져오기"라는 단일 초점으로 병합할 타당한 이유가 없습니다.

go 명령 문서에서:

-u 플래그는 명령줄에 명명된 패키지에 대한 종속성을 제공하는 업데이트 모듈에 사용 가능한 경우 최신 부 또는 패치 버전을 사용하도록 지시합니다.

이것은 -u 가져온 패키지의 모듈이 아니라 가져온 패키지가 의존하는 모듈을 구체적으로 처리한다는 의미입니다.

게다가 -u 与将 v0 版本中的任何更改视为主要版本更改的 Go 惯用法无关,因此不能出于原则轻易推荐使用 -uv0 버전의 변경 사항을 주요 버전 변경으로 처리하는 Go 관용구와 아무런 관련이 없는 것으로 보이므로 원칙적으로 사용을 쉽게 권장할 수는 없습니다. golang.org/x/test

의 추가 정보에는 다음과 같은 내용도 나와 있습니다.

x/text 버전이 1.0.0이 될 때까지 부 버전은 주요 버전으로 간주됩니다. 따라서 0.1.0에서 0.2.0으로 가는 것은 주요 버전 업그레이드로 간주됩니다. 🎜

위 내용은 -u를 사용할 때 왜 동일한 패키지의 두 가지 버전을 다운로드합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제