go get 和 go install 有什么区别?

新手上路,请多包涵

在玩了 go 工具一段时间后,它看起来像 go get

  1. (可选)下载,
  2. 编译,
  3. 并安装

一个软件,而 go install 只是

  1. 编译
  2. 并安装

它。在这种情况下,为什么 go install 命令存在,因为 go get 取代它?

原文由 thiagowfx 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

go install 在本地工作时是工作流程的一部分。假设您想使用一个库,但由于某种原因需要进行更改。你会这样做:

  • go get -d library ,只下载它;
  • 对下载的包进行更改;
  • go install library 安装本地版本。

据我所知 go get 没有标志表明它 应该下载,所以它不能替换 go install 在这里。

当您从头开始开发新包时,会使用相同的工作流程。

编辑:六年后,Go 1.16 更新并阐明了 go installgo get 的用法: https ://tip.golang.org/doc/go1.16#modules

go install ,带或不带版本后缀(如上所述),现在是在模块模式下 构建和安装包 的推荐方式。 go get 应该与 -d 标志一起使用来 调整当前模块的依赖关系而不构建包,并且使用 go get 是为了弃用构建和安装包 --- 。在未来的版本中,将始终启用 -d 标志。

原文由 BoppreH 发布,翻译遵循 CC BY-SA 4.0 许可协议

go get 按照这个顺序做了两件主要的事情:

  • 下载并保存在 $GOPATH/src/<import-path> 导入路径中命名的包(源代码)及其依赖项,然后

  • 执行一个 go install

-d 标志( go get -d )指示 go get 下载包后停止;也就是说,它指示 go get 不要做 go install


区别:

go get // 验证是否需要下载包,如果需要下载然后编译

go install // 跳过包下载部分,直接编译(如果缺少任何包会抛出错误)


关于 GOPATH 环境变量

Go 工具使用 GOPATH 环境变量。必须设置它才能 get , buildinstall 包,它指定你的工作空间的位置它可能是您在开发 Go 代码时需要设置的唯一环境变量。

同样, GOPATH 不应指向 Go 安装,而是指向您的工作区。

例如,在 Windows 上,如果您决定您的工作区位于 c:\gowork\ ,则需要将 GOPATH 值设置为 c:\gowork

在此处输入图像描述

Your source code should be at c:\gowork\src\<some project folder>\ and after you run go get at command prompt from within c:\gowork\src\<some project folder>\ you will see the c:\gowork\bin\ and c:\gowork\pkg\ 正在创建。

原文由 Alex Baban 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题