Reputation: 4866
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 under a project folder.
But what if I install it with go get
?
Upvotes: 272
Views: 236386
Reputation: 195
If you want to upgrade a version from a specific branch, you can use:
go get -u <path-to-repo>@<branch>
Upvotes: 3
Reputation: 61
Since this is one of the top hits when googling, I just wanted to add that for 1.17 "installing executables with 'go get' in module mode is deprecated".
go get -d
go install
go install <with_version>
https://golang.org/doc/go-get-install-deprecation
Upvotes: 6
Reputation: 103
Go to path and type
go get -u ./...
It will update all require packages.
Upvotes: 3
Reputation: 8944
To specify versions, or commits:
go get -u [email protected]
go get -u otherpackage@git-sha
See https://github.com/golang/go/wiki/Modules#daily-workflow
Upvotes: 12
Reputation: 645
go 1.13
(exec from module root directory)
Update specified dependencies:
go get -u <package-name>
Update all direct and indirect dependencies to latest minor or patch upgrades (pre-releases are ignored):
go get -u ./...
# or
go get -u=patch ./...
Reference:
https://github.com/golang/go/wiki/Modules#daily-workflow
go help get
Upvotes: 4
Reputation:
The above answeres have the following problems:
To avoid these, do the following:
go get -d
Upvotes: 14
Reputation: 636
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/...
Upvotes: 24
Reputation: 94789
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.
Upvotes: 409
Reputation: 222869
@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
Upvotes: 107