英文:
How to update the binary by go install?
问题
以前我可以通过以下方式安装Go二进制包:
go get -u github.com/some_user/some_project
现在它不再起作用了,经过一些搜索,我了解到了一个替代方法:
go install github.com/some_user/some_project@latest
到目前为止还好,但是现在我在主分支上推送了一些更改,我原本期望再次运行相同的go install
命令来更新已安装的二进制文件,但它没有更新。我想知道在go install
中,go get -u
的等效命令是什么。
英文:
I used to be able to install a go binary package by:
go get -u github.com/some_user/some_project
Now it does work any more, and after some googling, I learned an alternative:
go install github.com/some_user/some_project@latest
So far so good, but now I pushed a change to the master branch, and I was expecting to run the same go install command again to update the binary file installed, but it didn't. I wonder what the equivalent of go get -u
will be with go install
.
答案1
得分: 5
实际上,这不是因为GitHub的延迟。GitHub是一个Git代码库,一旦你推送了更改,你的代码库就会立即更新。这是因为goproxy
的原因。Goproxy是一个用于Go包的集中式存储库,它的存在是为了尽可能避免手动版本更新代码库和其他许多原因引起的问题,我不会深入介绍,请在这里阅读更多信息。goproxy不会实时索引每个代码库,所以你无法看到你的更改。实际上,你可以告诉Go不使用go代理,直接使用GitHub:
GOPROXY=direct go get -u github.com/some/package
这里的direct意味着直接使用GitHub,也可以是其他任何存储库。
英文:
Actually it's not because of github delay. Github is a git repository, once you push your changes, your code repository gets updated immediately. It's because of goproxy
. Goproxy is a centralized repository for go packages, and that's there to avoid (as much as possible) some problems with manually version updating to the code repository and many other reasons, which I'm not going to get deep into, read more here. goproxy wont index every code repository in real time, so that's why you couldn't see your changes. Indeed, you can tell go to not to use the go proxy, and use the github directly:
GOPROXY=direct go get -u github.com/some/package
The direct here means to use the github here directly, it can be any other repository.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论