使用该go
工具一段时间后,它看起来像go get
:
一个软件,而go install
简单
它.在这种情况下,为什么go install
命令存在,因为go get
它取代了它?
Bop*_*reH 57
go install
是本地工作时工作流程的一部分.假设您要使用库,但由于某种原因需要进行更改.你会这样做:
go get -d library
,只下载它;go install library
安装本地版本.据我知道go get
有没有标志,以表明它应该不下载,所以它不能代替go install
在这里.
从头开始开发新包时使用相同的工作流程.
Ale*_*ban 20
go get
按此顺序执行两项主要操作:
下载并保存在$GOPATH/src/<import-path>
导入路径中命名的包(源代码)及其依赖项中
执行一个 go install
该-d
标志(go get -d
)指示go get
下载包后停止; 也就是说,它指示go get
不要这样做go install
区别:
go get
//验证是否需要下载软件包,如果需要则下载然后编译
go install
//跳过包下载的部分,只需编译(如果缺少任何包,这将抛出错误)
关于GOPATH
环境变量
该GOPATH
环境变量必须以能够被设置get
,build
并且install
包,并指定你的工作空间的位置.它可能是开发Go代码时需要设置的唯一环境变量.
同样,GOPATH
不应指向Go安装,而应指向您的工作区.
例如,在Windows上,如果您确定工作区位于c:\gowork\
,则需要将GOPATH
值设置为c:\gowork
您的源代码应该c:\gowork\src\<some project folder>\
在您go get
从命令提示符处运行时,c:\gowork\src\<some project folder>\
您将看到c:\gowork\bin\
并c:\gowork\pkg\
正在创建.
请注意,go 1.16(2021 年第 1 季度)将使差异更加清晰,作为问题 40276 的一部分使用CL 266360实施:
go install
现在接受带有版本后缀的参数(例如,go install example.com/cmd@v1.0.0
)。
这会导致go install
以建立和模块感知模式安装软件包,忽略了go.mod
文件在当前目录或父目录,如果有一个。
这对于在不影响主模块的依赖关系的情况下安装可执行文件很有用。
go install
,带或不带版本后缀(如上所述),现在是在模块模式下构建和安装包的推荐方式。
go get
应与-d
标志一起使用以调整当前模块的依赖项,而无需构建包,不推荐使用go get
来构建和安装包。
在未来的版本中,该-d
标志将始终启用。