1 Overview
起因是这样的,因为需要用 go mod
,但是开发机的 Git 版本过旧了,导致 go mod
在执行一些 git
命令的时候会有一些问题。
# git version
git version 1.8.3.1
发现 git
都更新到大版本 2 开头了…所以升级吧。
2 操作
内网的仓库里,git
的版本还很低。因为通过 yum update git
发现内网仓库的 git
还是 1.8.3.1,太低了,本来想通过 rpm
包来安装,发现 git
的依赖好六七八个,遂放弃。最后还是得靠外部仓库,当然如果需要代理问题的话,还需要自行解决。
首先要观察仓库列表,仓库倒是很多,但是里面的软件都不太新。
yum repostlist all
决定重装一把,那就先删掉旧的 git
。
yum remove git
清理缓存,并重新构建缓存。
yum clean all
yum make cache
推荐配置阿里的镜像源。
具体的配置方法,可以参考阿里镜像源的配置文档,流程大概如下。
# 下载 repo 文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 放到 /etc/yum.repos.d/文件夹
解释一下 repo 文件的结构。
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
# 这个是仓库的开关
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
然后 yum
还有个 vars 文件夹,是可以作为公有变量来设置的。关于这个变量的设置,可以参考这篇文章。
更新完仓库的配置后再执行一些 yum update && yum make cache
就可以看到从阿里云的镜像源里获得的新的 Git 软件包。
3 总结
之前对 yum
了解太少了,其实跟 apt-get
很像,如果软件太旧了,需要更新,就修改仓库列表,增加一些外部更新比较频繁的仓库,其次就是如果需要使用代理,yum
和 apt-get
都有类似 conf 这样的配置文件可以单独配置。
最后,开头说的 go mod
的问题,通过升级 git
解决了,原因是 go mod
本质做了很多 go get
,而 go get
又做了很多 git
相关的操作,所以 git
版本过低,有时候确实会引起让人很恼火的 go mod
的问题。