英文:
Can 'go install' be made to work for executables with different names from the git repo?
问题
Go有一个很好的功能,你可以使用go install <x>
命令,它会下载、构建并安装一个二进制文件。
例如,在我的本地Windows PC上,go install github.com/goreleaser/goreleaser
会找到goreleaser的最新版本,下载、构建并将其安装到我的本地二进制文件路径中。
我正在一个项目上工作,我们希望启用go install
,但是如果GitHub仓库名称与可执行文件名称不匹配,就会遇到问题。GitHub CLI本身也遇到了完全相同的问题:
示例:
go install github.com/cli/cli@latest
go: downloading github.com/cli/cli v1.14.0
go: github.com/cli/cli@latest: module github.com/cli/cli@latest found (v1.14.0), but does not contain package github.com/cli/cli
有没有办法解决这个问题?
更新:我发现我可以直接通过其子目录引用包。在我的特定情况下,这样可以工作:go install github.com/OctopusDeploy/cli/cmd/octopus@latest
这有点不太方便,但是可以正常工作。对于GitHub CLI来说,这种方法行不通,因为他们的go.mod文件中有一个replace
指令
问题:有没有办法让这个过程更加简洁?是否有一种方法可以使用go install github.com/OctopusDeploy/cli@latest
而不是go install github.com/OctopusDeploy/cli/cmd/octopus@latest
?
英文:
Go has a nice feature where you can go install <x>
and it will download, build and install a binary.
For example, on my local windows PC, go install github.com/goreleaser/goreleaser
will find the latest release for goreleaser, download, build and install it to my local binaries path.
I am working on a project where we would like to enable go install
, but encounter a problem if the github repo name does not match the executable name. The GitHub CLI itself runs into the exact same problem:
Example:
go install github.com/cli/cli@latest
go: downloading github.com/cli/cli v1.14.0
go: github.com/cli/cli@latest: module github.com/cli/cli@latest found (v1.14.0), but does not contain package github.com/cli/cli
Is there a way to resolve this?
Update: I worked out that I could directly reference the package via it's sub directory. In my particular instance this works: go install github.com/OctopusDeploy/cli/cmd/octopus@latest
This is a bit unpleasant, but works correctly. It doesn't work for the github CLI because their go.mod has a replace
directive in it
Question: Can this be made nicer? Is there a way to put some sort of alias or configuration file so that go install github.com/OctopusDeploy/cli@latest
can be used instead of go install github.com/OctopusDeploy/cli/cmd/octopus@latest
?
答案1
得分: 1
这可以变得更好吗?有没有一种方法可以使用别名或配置文件,以便可以使用"go install github.com/OctopusDeploy/cli@latest"代替"go install github.com/OctopusDeploy/cli/cmd/octopus@latest"?
不可以。非常简单。
英文:
> Can this be made nicer? Is there a way to put some sort of alias or configuration file so that go install github.com/OctopusDeploy/cli@latest can be used instead of go install github.com/OctopusDeploy/cli/cmd/octopus@latest ?
No. Dead simple.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论