我想使用go get
安装一个包到GOPATH
。这在go工具迁移到go mod支持时变得很棘手。
在项目目录(=带有go.mod文件的目录)之外没有问题。在项目目录中,我希望设置G0111MODULE
变量应该可以完成这项工作,但它没有。
G0111MODULE=off go get <package name>
我怎样才能安装一个软件包到GOPATH
目录中包含go.mod
文件?谢谢。go env
输出:
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/zb/Library/Caches/go-build"
GOENV="/Users/zb/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/zb/dev/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/Cellar/go/1.13/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.13/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/zb/dev/mycopmany/links/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/gf/8xg53y0j2h9d3k5g3_vvvw9m0000gn/T/go-build248955952=/tmp/go-build -gno-record-gcc-switches -fno-common"
2条答案
按热度按时间cxfofazt1#
变量名为
GO111MODULE
(字母为O
),而不是G0111MODULE
(数字为0
)。5vf7fwbs2#
看起来OP有两个不同的需求:
a.使用go.mod将软件包安装到GOPATH目录中
(as在标题中)
如文档中所述(来源:Deprecation of 'go get' for installing executables - The Go Programming Language),
从Go语言1.17开始,不推荐使用
go get
安装可执行文件,可以使用go install
。因此,从包含
go.mod
文件的目录中运行go install
(不带参数,如this example)将把可执行文件移动到$GOPATH/bin
,这将允许您从任何位置运行可执行文件-前提是$GOPATH/bin
是$PATH
环境变量的一部分。B.“(...)我想安装一个可以作为命令行工具访问的go程序。”
(as(见执行主任的一项评论)
现在,为了满足这一特定需求,您可以将
/path/to/project_directory
添加到$PATH