How does Go update third-party packages?
@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
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/...
The above answeres have the following problems:
- They update everything including your app (in case you have uncommitted changes).
- They updated packages you may have already removed from your project but are already on your disk.
To avoid these, do the following:
- Delete the 3rd party folders that you want to update.
- go to your app folder and run
go get -d
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.