[go] Go는 타사 패키지를 어떻게 업데이트합니까?

golang 패키지가 얼마나 활발하게 성장하고 향상되는지 살펴보면 패키지 버전의 문제가 어떻게 해결되는지 궁금합니다.

한 가지 방법은 타사 패키지를 프로젝트 폴더에 저장하는 것입니다.

하지만 함께 설치하면 go get어떻게 되나요?



답변

go get에 나열된 첫 번째 디렉토리 GOPATH(콜론으로 구분 된 디렉토리 목록을 포함 할 수있는 환경 변수)에 패키지를 설치합니다 . go get -u기존 패키지를 업데이트하는 데 사용할 수 있습니다 .

당신은 또한 당신의 go get -u all모든 패키지를 업데이트 하는 데 사용할 수 있습니다GOPATH

더 큰 프로젝트의 경우 프로젝트 A에서 라이브러리를 업데이트해도 프로젝트 B에서 문제가 발생하지 않도록 각 프로젝트마다 다른 GOPATH를 작성하는 것이 합리적 일 수 있습니다.

환경 변수 go help gopath에 대한 자세한 내용을 보려면 입력 GOPATH하십시오.


답변

@tux 대답은 중대하다, 당신이 사용할 수있는 추가하고 싶었 가서 특정 패키지를 업데이트 :

go get -u full_package_name


답변

질문 에 타사 라이브러리가 언급 되었지만 모든 패키지는 언급 되지 않았으므로 와일드 카드를 사용하는 것이 좋습니다.

유스 케이스 : Github VCS에서 얻은 모든 패키지를 업데이트하고 싶다면 다음과 같이 말하십시오.

go get -u github.com/... // ('...' being the wildcard). 

이것은 현재의 github 패키지 만 업데이트합니다. $GOPATH

VCS 내에서도 동일하게 적용됩니다. ogranizaiton A의 저장소에서 모든 패키지를 업그레이드하려는 경우에만 의존합니다.

go get -u github.com/orgA/...


답변

위의 답변에는 다음과 같은 문제가 있습니다.

  1. 커밋되지 않은 변경 사항이있는 경우 앱을 포함한 모든 것을 업데이트합니다.
  2. 프로젝트에서 이미 제거했지만 디스크에 이미있는 패키지를 업데이트했습니다.

이를 피하려면 다음을 수행하십시오.

  1. 업데이트하려는 타사 폴더를 삭제하십시오.
  2. 앱 폴더로 이동하여 실행 go get -d

답변

1.13으로 가다

(모듈 루트 디렉토리에서 실행)

지정된 종속성을 업데이트하십시오.

go get -u <package-name>

모든 직접 및 간접 종속성을 최신 마이너 또는 패치 업그레이드로 업데이트하십시오 (시험판은 무시 됨).

go get -u ./...
# or
go get -u=patch ./...

참고:

https://github.com/golang/go/wiki/Modules#daily-workflow

go help get


답변

버전을 지정하거나 커밋하려면

go get -u otherpackage@1.2.3

go get -u otherpackage@git-sha

https://github.com/golang/go/wiki/Modules#daily-workflow를 참조 하십시오


답변

경로로 이동하여 입력

go get -u ./..

모든 필수 패키지를 업데이트합니다.