go install

命令

  • go install 用于编译并安装指定的代码包及它们的依赖包
  • 这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或 .a 包),第二步会把编译好的结果移到指定目录($GOPATH/bin$GOPATH/pkg)
    • go install 命令只比 go build 命令多做了一件事,即安装编译后的结果文件到指定目录
  • go install 命令可以接受所有可用于 go build 命令的参数

安装代码包

  • go install 命令会把编译后的可执行文件保存在源码文件所在工作区的 bin 目录下,包保存在 pkg 目录
  • 如果 go install 命令后跟的代码包中仅包含库源码文件,那么 go install 命令会把编译后的结果文件保存在源码文件所在工作区的 pkg 目录下。结果文件是对应的代码包归档文件(也叫静态链接库文件,名称以 .a 结尾)
    • go build 命令对仅包含库源码文件的代码包进行编译时,不会在当前工作区的 src 以及 pkg 目录下产生任何结果文件。结果文件会出于编译目的被生成在临时目录,但并不会使当前工作区目录产生任何变化。只会留下可执行文件。go build -i 可将包安装在独立于构建目标的地方
  • go install 命令时不后跟任何代码包参数,那么命令将试图编译当前目录所对应的代码包

安装命令源码文件

go install 的参数

参数 描述
-d 只下载不安装
-f 只有在包含 -u 参数时才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行 fix,而后再进行编译和安装
-insecure 允许使用非安全的 scheme(如HTTP)去下载指定的代码包。如果代码仓库(如公司内部的Gitlab)没有 HTTPS 支持,可以添加此标记。请在确定安全的情况下使用它
-t 下载并安装指定的代码包中的测试源码文件中依赖的代码包
-u 强制使用网络更新已有代码包及其依赖包。默认情况该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包
-v 显示执行的命令

相关