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

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 命令去拉取

相关推荐

  1. Go语言管理工具Go Path详解

    2023-12-29 08:52:04       57 阅读
  2. Go语言管理工具Go Modules使用

    2023-12-29 08:52:04       60 阅读
  3. Go语言管理工具Go Vendor使用

    2023-12-29 08:52:04       59 阅读
  4. Go语言函数:强大而灵活编程工具

    2023-12-29 08:52:04       18 阅读
  5. GOPATHGo Modules关系

    2023-12-29 08:52:04       33 阅读
  6. go语言学习-管理

    2023-12-29 08:52:04       64 阅读
  7. 开发go语言作用详细分析

    2023-12-29 08:52:04       32 阅读
  8. Go 语言 Cond 机制详解

    2023-12-29 08:52:04       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-29 08:52:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-29 08:52:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-29 08:52:04       82 阅读
  4. Python语言-面向对象

    2023-12-29 08:52:04       91 阅读

热门阅读

  1. 使用History和location(js的问题)

    2023-12-29 08:52:04       51 阅读
  2. uniapp实现小程序和内嵌webView的互通

    2023-12-29 08:52:04       57 阅读
  3. webpack搭建vue2项目

    2023-12-29 08:52:04       54 阅读
  4. c# 读取文件方式及对比

    2023-12-29 08:52:04       49 阅读
  5. uniapp中globaldata的使用

    2023-12-29 08:52:04       59 阅读
  6. 单例模式(C++)

    2023-12-29 08:52:04       49 阅读
  7. 单例模式的双重检查锁定是什么?

    2023-12-29 08:52:04       51 阅读
  8. 创建型--单例模式

    2023-12-29 08:52:04       63 阅读
  9. C#判断骨龄与生活年龄的比较

    2023-12-29 08:52:04       52 阅读
  10. [云原生] Go web工作流程

    2023-12-29 08:52:04       60 阅读
  11. react的render什么时候渲染?

    2023-12-29 08:52:04       53 阅读