Centos 安装最新版GIT

概述

环境:
centos-6.8
git-2.9.3

说明:像SVN一样,Centos自带的git的版本,也不高,貌似是1.7版本的,如果需要安装新版本的git,就需要手动编译安装。

安装过程

手动编译安装,需要下载git的源码包。手动编译,不像yum安装一样,在安装的过程中会自动安装第三方依赖的库或者扩展等。所有的依赖、扩展都需要自己手动编译安装。

第1步

安装git编译安装过程中,需要的依赖扩展

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
# yum install gcc perl-ExtUtils-MakeMaker
第2步

下载git最新版本的源码包,截至到目前,最新的git版本是2.9.3

# wget https://www.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz
# tar xzf git-2.9.3.tar.gz
# cd git-2.9.3
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install

如果需要指定git的版本号,只需要到https://www.kernel.org/pub/software/scm/git/中,寻找自己系统对应的版本,对应的git版本即可。

第3步

安装成功之后,需要将git写入到系统的环境变量,以便执行git相关的命令
vim /etc/bashrc

打开编辑bashrc文件之后,在结尾追加:export PATH=$PATH:/usr/local/git/bin

重新加载bashrcsource /etc/bashrc

确定git版本是最新版,并且安装成功:git --version

问题

  • git安装,make prefix=/usr/local all报出下面的错误信息:
libgit.a(utf8.o): In function `reencode_string_iconv':
/usr/local/git/utf8.c:463: undefined reference to `libiconv'
libgit.a(utf8.o): In function `reencode_string_len':
/usr/local/git/utf8.c:502: undefined reference to `libiconv_open'
/usr/local/git/utf8.c:521: undefined reference to `libiconv_close'
/usr/local/git/utf8.c:515: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [git-credential-store] Error 1

需要安装libiconv扩展,安装步骤:

# 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

创建一个软链接到/usr/lib

ln -s /usr/local/lib/libiconv.so /usr/lib
ln -s /usr/local/lib/libiconv.so.2 /usr/lib

然后,继续回到git安装过程的make步骤,添加--with-iconv参数
最终的运行安装模式:
./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv

  • 执行source /etc/bashrc后,git --version没有生效
    可以find / -name 'git'找到git命令文件在/usr/bin下,将该文件备份,然后拷贝新安装的git到该目录
    cp /usr/local/git/bin/git /usr/bin即可

附录

libiconv下载地址[链接:http://pan.baidu.com/s/1ccTaaU 密码:5pfr]