How to install binaries of dependencies?

时间:2016-04-12 00:34:38

标签: go

My Golang project depends on a few packages (i.e. https://github.com/mattes/migrate and https://github.com/joho/godotenv). I know I can go get or go install them separately, but is there a way to install all of the dependencies of a project in one shot? Ideally, I would expect go install ./... to put the migrate and godotenv binaries in my $GOPATH/bin, but it only installs the main package binary and not the binaries of the dependencies.

1 个答案:

答案 0 :(得分:1)

您是否想要一种方法从您的本地计算机上自动从代码的go install ./...安装要呼叫的二进制文件?

直接Go不会发生这种情况,除非它们以相同的用户名或模式列出,您可以在单个go install命令中输入。但只是上面列出的两个是不同的,不会发生。

选项1)要求您的用户为每个依赖关系调用go install(这很常见)。

选项2)或者,创建一个bash / batch文件,在repo中使用简单的install.sh命令运行它们。哪个,会为所有依赖项调用go install。另一种类似UNIX / C的方法是创建Makefile,并告诉用户运行make

就个人而言,我更喜欢选项2,因为它可以让您对服务或实用程序进行非常复杂的控制。你可以开始简单;但是,稍后会添加测试,go generate命令以及将来您喜欢的任何其他内容 - 所有这些都无需更改安装说明just run 'make install' and it will handle it。它也有助于C.I.服务器,你可以拥有make test或任何你想要的东西;但是,正常用户通常会运行它。全部,在一个Makefile内,您可以稍后更改。

我认为我的Updater脚本有25个go get -u -v命令。