go从github上安装cmd 命令行工具

github上很多go写的命令行工具,我们可以用go命令来安装它,在1.18之前的版本,我们可以用go get来安装,但是go 1.18开始,就不要用go get  了,因为已经被废弃了,你应该用go install命令。

go install

用法:

go install [build flags] [packages]

例子:

# Install the latest version of a program,
# ignoring go.mod in the current directory (if any).
$ go install golang.org/x/tools/[email protected]

# Install a specific version of a program.
$ go install golang.org/x/tools/[email protected]

# Install a program at the version selected by the module in the current directory.
$ go install golang.org/x/tools/gopls

# Install all programs in a directory.
$ go install ./cmd/...

go install命令构建并安装由命令行上的路径命名的包。可执行文件(main包)安装到由GOBIN环境变量命名的目录中,默认为 $GOPATH/bin$HOME/go/bin如果GOPATH未设置环境变量。中的可执行文件$GOROOT安装在$GOROOT/bin$GOTOOLDIR代替$GOBIN. 构建和缓存不可执行的包,但不安装。

从 Go 1.16 开始,如果参数有版本后缀(如@latest或 @v1.0.0),go install则以模块感知模式构建包,忽略 go.mod当前目录或任何父目录中的文件(如果有的话)。这对于在不影响主模块依赖关系的情况下安装可执行文件很有用。

为了消除构建中使用的模块版本的歧义,参数必须满足以下约束:

  • 参数必须是包路径或包模式(带有“ ...”通配符)。它们不能是标准包(如fmt)、元模式(stdcmd、 all)或相对或绝对文件路径。
  • 所有参数必须具有相同的版本后缀。不允许不同的查询,即使它们引用相同的版本。
  • 所有参数必须引用相同版本的相同模块中的包。
  • 包路径参数必须引用main包。模式参数只会匹配main包。
  • 没有模块被认为是主模块
    • 如果包含在命令行上命名的包的模块有一个go.mod 文件,则它不能包含指令(replaceexclude),如果它是主模块,则会导致它被不同地解释。
    • 该模块不得要求其自身的更高版本。
    • 供应商目录未在任何模块中使用。(供应商目录不包含在模块 zip 文件中,因此go install不下载它们。)

有关支持的版本查询语法,请参阅版本查询。Go 1.15 及更低版本不支持将版本查询与go install.

如果参数没有版本后缀,go install则可以在模块感知模式或GOPATH模式下运行,具体取决于GO111MODULE环境变量和go.mod文件的存在。有关详细信息,请参阅模块感知命​​令。如果启用了模块感知模式,go install则在主模块的上下文中运行,这可能与包含正在安装的包的模块不同。

 

示例,如果我们想安装git-cpr命令行工具,我们只需要输入

go install github.com/cnmade/[email protected]

分类: 默认 标签: 发布于: 2022-02-18 15:55:37, 更新于: 2022-02-18 15:55:37