centos7升级git版本控制工具
问题描述
centos7系统默认的git安装版本是1.8,但是在项目构建中发现git版本过低,于是用源码编译的方式进行升级.同时该文章也适用于安装新的git,相信大家对git都有一定的了解了,在文章过程中有的步骤也就不细细讲了.
操作环境
centos7.0
软件准备
git版本,libiconv
安装流程
1、第一步卸载原有的git。
yum remove git
2、安装相关依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum install gcc perl-ExtUtils-MakeMaker
3、安装git
将压缩包解压到/usr/local/src目录 tar -C /usr/local/src -vxf git-2.7.3.tar.xz cd git-2.7.3 // 编译 make prefix=/usr/local/git all // 安装 make prefix=/usr/local/git install // 写入到环境变量中(方法一) echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile && source /etc/profile // 写入到环境变量中(方法二) export PATH=$PATH:/usr/local/bin/git // 查看是否已经安装成功 git --version
问题解决
正常的流程就是按照上面的流程进行安装即可,下面总结一些在安装过程中遇到的几个问题.
1、make prefix=/usr/local/git all进行编译的时候提示如下错误
LINK git-credential-store libgit.a(utf8.o): In function `reencode_string_iconv': /usr/src/git-2.8.3/utf8.c:463: undefined reference to `libiconv' libgit.a(utf8.o): In function `reencode_string_len': /usr/src/git-2.8.3/utf8.c:502: undefined reference to `libiconv_open' /usr/src/git-2.8.3/utf8.c:521: undefined reference to `libiconv_close' /usr/src/git-2.8.3/utf8.c:515: undefined reference to `libiconv_open' collect2: ld returned 1 exit status make: *** [git-credential-store] Error 1
这个问题主要是系统缺少libiconv库导致的。根据上面提供的链接,下载libiconv即可。
cd /usr/local/src wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz tar -zxvf libiconv-1.14.tar.gz cd libiconv-1.14 配置 ./configure --prefix=/usr/local/libiconv 编译 make 安装 make install 建立软连接 ln -s /usr/local/lib/libiconv.so /usr/lib ln -s /usr/local/lib/libiconv.so.2 /usr/lib
这时候还libiconv库已经安装完成,下面进入我们的git安装目录,按照下面的方式进行安装
make configure ./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv 编译 make 安装 make install 加入环境变量 export PATH=$PATH:/usr/local/bin/git 检测版本号 git --version
2、在安装libiconv时会遇到./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)的错误提示,进行下面的操作即可解决.
进入错误文件路径 cd libiconv-1.14/srclib 编辑文件stdio.in.h找到698行的样子,内容是_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); 将这一行注释掉(注意注释一定要用/**/来进行注释),替换为下面的内容 #if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16) _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); #endif
作者:士兵7
链接:https://www.imooc.com/article/275738
相关推荐
formula 2020-11-12
huhongfei 2020-11-05
乾坤一碼農 2020-10-27
liumengyanysu 2020-10-22
E哥的aws认证攻略 2020-10-15
tianyafengxin 2020-10-08
guying 2020-10-05
好脑筋不如烂笔头 2020-09-17
nebulali 2020-09-11
佛系程序员J 2020-09-15
fenggit 2020-09-15
JustHaveTry 2020-09-11
兄dei努力赚钱吧 2020-09-06
IngeniousIT 2020-08-25
liumengyanysu 2020-08-17
guying 2020-08-16