How does Go update third-party packages?

后端 未结 7 1078
盖世英雄少女心
盖世英雄少女心 2020-12-22 15:35

Looking how actively golang packages grow and improve I wonder how the problem with package versions is solved?

I see that one way is to store third-party packages u

相关标签:
7条回答
  • 2020-12-22 15:50

    Go to path and type

    go get -u ./..
    

    It will update all require packages.

    0 讨论(0)
  • 2020-12-22 15:55

    Since the question mentioned third-party libraries and not all packages then you probably want to fall back to using wildcards.

    A use case being: I just want to update all my packages that are obtained from the Github VCS, then you would just say:

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

    This would go ahead and only update your github packages in the current $GOPATH

    Same applies for within a VCS too, say you want to only upgrade all the packages from ogranizaiton A's repo's since as they have released a hotfix you depend on:

    go get -u github.com/orgA/...
    
    0 讨论(0)
  • 2020-12-22 16:00

    The above answeres have the following problems:

    1. They update everything including your app (in case you have uncommitted changes).
    2. They updated packages you may have already removed from your project but are already on your disk.

    To avoid these, do the following:

    1. Delete the 3rd party folders that you want to update.
    2. go to your app folder and run go get -d
    0 讨论(0)
  • 2020-12-22 16:01

    go get will install the package in the first directory listed at GOPATH (an environment variable which might contain a colon separated list of directories). You can use go get -u to update existing packages.

    You can also use go get -u all to update all packages in your GOPATH

    For larger projects, it might be reasonable to create different GOPATHs for each project, so that updating a library in project A wont cause issues in project B.

    Type go help gopath to find out more about the GOPATH environment variable.

    0 讨论(0)
  • 2020-12-22 16:06

    @tux answer is great, just wanted to add that you can use go get to update a specific package:

    go get -u full_package_name
    
    0 讨论(0)
  • 2020-12-22 16:06

    To specify versions, or commits:

    go get -u otherpackage@1.2.3
    
    go get -u otherpackage@git-sha
    

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

    0 讨论(0)
提交回复
热议问题