• go get命令不再具有安装功能


    go get功能呢

    一直以来,我们知道go get命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个App一样简单。

    go get命令可以动态获取远程代码包,命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行 go install。

    相关参数介绍:

    • -d 只下载不安装
    • -f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
    • -fix 在获取源码之后先运行 fix,然后再去做其他的事情
    • -t 同时也下载需要为运行测试所需要的包
    • -u 强制使用网络去更新包和它的依赖包
    • -v 显示执行的命令

    基本使用方式如下:

    go get github.com/davyxu/tabtoy
    
    • 1

    go install

    在golang 1.16版本中,引入go install命令。该命令的功能相当于之前go get第二步的安装功能。go install 被设计为“用于构建和安装二进制文件”。

    无论当前是否在一个模块下,此go install命令都会在 $GOPATH/bin 下安装指定版本的工具。

    go get安装功能迁移

    随着go install的出现,在golang 1.18版本中,go get将二进制安装相关的功能都转移到了go install,仅作为用于编辑go.mod文件的命令存在。

    在golang 1.18版本中删掉了go get安装二进制的功能,也意味着go get的行为就等同于现在执行go get -d命令了,仅需下载源码,并将依赖添加至 go.mod 即可。

    改造原因

    Go一直使用 go get 命令,将需要的工具安装到$GOPATH/bin 目录下,但这种方式存在一个很严重的问题。go get由于具备更改go.mod文件的能力,因此要避免执行go get命令时,让它接触到go.mod 文件,否则它会将安装的(可执行)工具作为一个依赖。

    go install @ 是从 1.16 开始增加的,无论当前是否在一个模块下,此命令都会在 $GOPATH/bin 下安装指定版本的工具。

    Go 1.16 中GO111MODULE 默认是打开的,go install不会修改 go.mod 之类的文件,不会造成任何意外。

    小结

    如果你使用的是Golang 1.18及以上版本,那么之前很多文章中go get命令可能并不适合依赖二进制了,而需要改用go install命令来进行操作。

  • 相关阅读:
    GB28181设备控制和TeleBoot远程启动命令探究
    web安全之XSS攻击
    深度学习自学笔记十三:unet网络详解和环境配置
    win版redis详细安装教程
    计算机系统(8)----- 进程的状态和转换
    springboot自动配置原理面试题(自用)
    理解线段树这一篇文章就够啦!
    逗号表达式
    ISP算法----AWB总结及源代码
    Golang的类型断言的使用
  • 原文地址:https://blog.csdn.net/wo541075754/article/details/132714057