Go工具无法找到二进制文件。去工具:没有这样的工具"兽医"

时间:2015-10-27 12:53:23

标签: go

我在docker容器中运行golang。并且'去工具'无法找到' vet'。你能给我一些如何调试它的想法吗?

我已经使用Dockerfile for 1.5作为模板。 https://github.com/docker-library/golang/blob/51d6eacd41fe80d41105142b9ad32f575082970f/1.5/Dockerfile

ENV GOLANG_VERSION 1.5.1
ENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-        amd64.tar.gz
ENV GOLANG_DOWNLOAD_SHA1 46eecd290d8803887dec718c691cc243f2175fe0

RUN curl -fsSL "$GOLANG_DOWNLOAD_URL" -o golang.tar.gz \
&& echo "$GOLANG_DOWNLOAD_SHA1  golang.tar.gz" | sha1sum -c - \
&& tar -C /usr/local -xzf golang.tar.gz \
&& rm golang.tar.gz

ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH

然而,当我用

安装govet时
go get golang.org/x/tools/cmd/vet 

并尝试

bash-4.3# go tool vet
go tool: no such tool "vet"

我有以下环境设置:

$PATH includes $GOPATH/bin /usr/lib/go/bin:/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

bash# go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT=""
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
bash# ls $GOPATH/bin
fgt               go-junit-report   godep             golint            mt-content-blogs  vet   
bash# ls $GOROOT/bin/
go     gofmt

问题的关键在于即使在使用go get golang.org/x/tools/cmd/vet

安装后,go工具也不会列出兽医
bash# go tool
addr2line
api
asm
cgo
compile
dist
doc
fix
link
nm
objdump
pack
pprof
trace
yacc

2 个答案:

答案 0 :(得分:1)

警告:从Go 1.12(2019年2月,3.5年后)开始,go tool vet将完全不可用。只有go vet

请参见go 1.12 release notes

  

go vet命令已被重写,可以用作各种不同源代码分析工具的基础。有关详细信息,请参见golang.org/x/tools/go/analysis软件包。

     

一个副作用是不再支持go tool vet
  必须将使用go tool vet的外部工具更改为使用go vet
  使用go vet代替go tool vet应该适用于所有受支持的Go版本。

     

作为此更改的一部分,-shadow不再提供实验性go vet选项。
  现在可以使用以下方法检查变量阴影:

go install golang.org/x/tools/go/analysis/passes/shadow/cmd/shadow
go vet -vettool=$(which shadow)

答案 1 :(得分:-1)

找出问题所在。看来我错过了在我正在使用的基础docker镜像上安装go工具。

RUN apk --update-cache --allow-untrusted \
--repository http://dl-3.alpinelinux.org/alpine/edge/community/ \
--arch=x86_64 add \
go=${GOLANG_VERSION}-r3 \
go-tools=${GOLANG_VERSION}-r3 \
git \
&& rm -rf /var/cache/apk/* \
&& mkdir -p /go/src /go/bin \
&& chmod -R 777 /go