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 Root 和 Go 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
- 先查看操作系统的版本
- Windows 上执行这个
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!