我的更改不会在go app中结束。去了怎么回事?

时间:2017-07-12 01:04:50

标签: go

我是新手。

我克隆了这个项目:[oauth2_proxy] [1] 我想添加其他提供商。所以我在提供者中创建了提供者文件。将提供程序名称添加到providers switch语句。 但是,当我构建生成的二进制文件时,提供程序会继续回到谷歌。

似乎我的提供者尚未添加。我怀疑go build可能会从github中提取提供程序并忽略我的本地更改。那是对的吗?你是如何构建这个东西的?

我使用go build构建,因为./dist.sh脚本对我不起作用。我正在设法制作二进制文件。但它并没有出现我的代码文件。我知道这是因为当我为#34; google"或" linkedin"或者生成的二进制文件中的任何提供程序名称:Binary file oauth2_proxy matches。但对于我自己的提供商来说,没有比赛。

它可能与我编译应用程序的方式有关。我怎么做?没有提供github页面上的说明。对不起我的无知。我来自c ++背景,这更符合逻辑。 Go似乎自动获得了依赖性!?

根据@Topo的建议

matthewh@xen:~/dev/oauth2_proxy$ export GOPATH=`pwd`
matthewh@xen:~/dev/oauth2_proxy$ rm -rf src
matthewh@xen:~/dev/oauth2_proxy$ go get ./...
go install: no install location for directory /home/matthewh/dev/oauth2_proxy outside GOPATH
    For more details see: 'go help gopath'
go install: no install location for directory /home/matthewh/dev/oauth2_proxy/api outside GOPATH
    For more details see: 'go help gopath'
go install: no install location for directory /home/matthewh/dev/oauth2_proxy/cookie outside GOPATH
    For more details see: 'go help gopath'
go install: no install location for directory /home/matthewh/dev/oauth2_proxy/providers outside GOPATH
    For more details see: 'go help gopath'

src/cloud.google.com/go/internal/retry.go:21:2: cannot find package "github.com/googleapis/gax-go" in any of:
    /usr/local/go/src/github.com/googleapis/gax-go (from $GOROOT)
    /home/matthewh/dev/oauth2_proxy/src/github.com/googleapis/gax-go (from $GOPATH)
src/google.golang.org/api/internal/settings.go:22:2: cannot find package "google.golang.org/grpc" in any of:
    /usr/local/go/src/google.golang.org/grpc (from $GOROOT)
    /home/matthewh/dev/oauth2_proxy/src/google.golang.org/grpc (from $GOPATH)
src/google.golang.org/api/transport/dial.go:30:2: cannot find package "google.golang.org/grpc/credentials" in any of:
    /usr/local/go/src/google.golang.org/grpc/credentials (from $GOROOT)

 ...

  [1]: https://github.com/bitly/oauth2_proxy

1 个答案:

答案 0 :(得分:1)

修改

我刚刚在我的机器上做了go get -v github.com/bitly/oauth2_proxy

详细详情:http://pasted.co/60e2b56d

二进制文件是在$GOPATH/bin/oauth2_proxy下生成的。

-rwxr-xr-x  1 jeeva  staff    10M Jul 11 19:02 oauth2_proxy

让我们从基础开始。首先设置Go工作区(How to Write Go Code)选择GOPATH目录。

例如:/ Users / matt / dev

export GOPATH=/Users/matt/dev

然后执行go get获取oauth2_proxy。通常go get是该存储库的git clone。

go get github.com/bitly/oauth2_proxy

它将获取源代码并运行go install。成功执行此命令后。您将在$GOPATH/bin中看到二进制文件。

现在根据需要修改源代码并运行go install来构建二进制文件。

go install github.com/bitly/oauth2_proxy

OR
cd $GOPATH/src/github.com/bitly/oauth2_proxy
go install

如果您想手动而不是go get。然后选择GOPATH的目录并导出它(如上所述)然后

mkdir -p $GOPATH/src/github.com/bitly
cd $GOPATH/src/github.com/bitly
git clone https://github.com/bitly/oauth2_proxy.git
cd oauth2_proxy
go get ./...
go install 

现在二进制文件将在$GOPATH/bin