Go语言中的包管理工具之Go Path详解

2023-12-29 06:12:46

GoLang 中常用的包管理的方式

1 )概述

  • 常用的有三种
    • Go Path
    • Go Vendor
    • Go Modules

2 )发展历程

  • 早期go的包管理存在很大缺陷,甚至可以说没有官方统一的包管理工具
    • 一方面官方在努力发布一些实验性的包管理工具。
    • 同时也出现了很多社区开发的包管理工具。
    • 在官方和社区的包管理工具中,仅官方推荐的就达15种之多。
      • 比如go path, godep,glide, go vendor等等。
  • 虽然在前期 Go包管理工具处于百家争鸣之态, 但是主流的go的包管理,
  • 我们只需要记住下面这三种主要的
    • 第一个是 Go Path (从go诞生的时候就支持)
    • 第二个是 Go Vendor (从 go 1.5 版本开始)
    • 第三个是 Go Modules (从 go 1.11 才开始支持)

关于 Go Path

1 ) 概述

  • 我们先来看看go语言,刚发布阶段,是怎么去做包管理的
  • 在go语言的发布阶段,主要是通过 Go Path 模式来进行包管理
  • Go Path 是最早的依赖包管理方式。从 2009.11.10 随着第一个发布的第一个开源版本就有了
  • Go Path本质上它不算是go的包管理工具,它只是提供了一个存放包的路径的一个环境变量
  • Go Path 模式有一个很大的缺陷,就是它不支持依赖包的版本控制
  • 因为 Go Path 模式下,同一个包, 它的导入路径是一样的,这样也就不支持依赖包的不同版本。

2 ) Go Path模式Go Path路径的区别

  • 需要注意的是,Go Path模式 和 Go Path路径是两个不同的概念
    • Go Path模式: 是指我们通过 Go Path, 来管理我们的包
    • Go Path路径, 指的是 Go Path 这个环境变量的路径
  • 不管我们使用哪种包管理方式都可以有 Go Path 路径, 其包管理方式
    • 可能依赖 Go Path 路径来实现
    • 也可能不需要 Go Path 路径
  • 并不是设置 Go Path 路径就一定使用了 Go Path 模式来管理我们的依赖包。
  • 这一点呢是我们需要注意的。

3 ) Go RootGo Path的区别

  • Go Root 是go的安装目录,存放的是go语言内置的开发包和工具类,就类似Java的JDK
  • Go Path是go语言指定的工作空间,用于存放go工程代码和第三方依赖包
  • 当然,如果我们使用 Go Modules 管理,我们的工程代码也没有必要一定要放在Go Path下
    • 需要注意的是,Go Path 目录和 Go Root 目录不能是同一个目录
    • 这样就会很容易导致项目中的包和标准库重名而造成编译出现问题
  • Go Path 是有默认值的,那在Go的1.8版本之前,Go Path 的环境变量默认是空的
    • 那从1.8版本开始呢,go开发包在安装完成之后,就会给 Go Path 一个默认的目录
  • 在Windows目录下,它的默认目录就是这个 %USERPROFILE%/go
    • 例如: c:\users\用户名\go
  • 在Unix类型的操作系统下面,那它是在home目录下面的go目录当中
    • 例如: /home/用户名/go
  • 我们可以通过 go env 指令来查看这两个环境变量的具体路径。
    • Windows 上执行这个 go env 这个命令
    • Linux环境,比如 redhat
      • 先查看操作系统的版本 cat /etc/redhat-release
      • 我们再执行 go env | grep PATH

4 ) Go Pass是怎么配置的

  • 在linux环境当中,如果我们希望不同的用户具有不同的 Go Pass
  • 我们可以将 Go Pass 设置到这个 ~/.bash_profile 这个文件里面
    • 只会对当前登录的这个用户生效。比如当前登录的用户是张三
    • 那这种配置呢比较适合使用linux操作系统的开发者环境使用
  • 在线上部署的时候,我们可以设置到 /etc/profile 这个文件里面
    • 这个文件中的设置, 是对全部用户都是有效的
    • 同时, 我们又可以将 GOBIN 这个环境变量加入到 PATH 变量中
    • 可以在这个 etc/profile 这个文件末尾, 增加这三个go的环境变量, 举例~
      • export GOPATH = $HOME/mygopath$
      • export GOBIN = $GOPATH/bin$
      • export PATH = $PATH:$GOBIN$ 追加导出
  • 当我们开启了Go Path模式, 我们的工程代码就必须放在 Go Path 下面的 src 这个目录下面
    • 即: $GOPATH/src
  • 当我们用到一些第三方依赖包的时候, 就需要通过 go get 命令去拉取

文章来源:https://blog.csdn.net/Tyro_java/article/details/135280002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。