最小化安装的centos7.5上编译安装git2.19

时间:2023-01-15 23:06:47

VMware Workstation已经采用最小化安装CentOS7,显示版本为CentOS7.5,准备采用yum安装git。

采用yum list git发现可安装的GIT软件包版本1.8.3.1,新的版本已经是2.19了,因此,我决定编译安装git2.19。

由于采用最小化安装系统,编译时出现一些问题,这里对处理过程作一下备忘:

1、首先在git官网上下载最新的版本,下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.19.0.tar.gz

2、由于采用win10操作系统下载的文件,需要上传到CentOS7上,操作方式我一般通过SecureCRT采用SSH2协议登录,

上传文件也通过SecureCRT工具中的SFTP协议,具体方法如图:

最小化安装的centos7.5上编译安装git2.19

注意:上传的文件会在登录用户的home目录下,可以通过lpwd查看本地目录,pwd查看远端目录

最小化安装的centos7.5上编译安装git2.19

3、对文件解压:tar   xzvf   git-2.19.0.tar.gz

4、进入解压后的git目录后,安装方式参考:https://github.com/git/git/blob/master/INSTALL或目录下的INSTALL,这里采用建议步骤:

# make configure ;# as yourself
# ./configure --prefix=/usr ;# as yourself
# make all doc ;# as yourself
# make install install-doc install-html;# as root

5、首先执行make configure,开始就出错了,提示:

configure: Setting lib to 'lib' (the default)
configure: Will try -pthread then -lpthread to enable POSIX Threads.
configure: CHECKS for site configuration
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/opt/git-2.19.0':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

通过yum provides gcc和 yum provides cc查询到c编译器没有安装,yum -y install gcc安装gcc包及对应的依赖。

6、再次执行make configure,再次出现如下错误:

GIT_VERSION = 2.19.0
GEN configure
/bin/sh: autoconf: 未找到命令
make: *** [configure] 错误 127

 通过yum provides autoconf查询到没有安装autoconf,yum -y install autoconf安装包及对应的依赖。

7、再一次执行make configure,正常了,接下来 ./configure很顺利。

8、执行make all doc,又出现错误:

* new build flags
CC credential-store.o
In file included from credential-store.c:1:0:
cache.h:20:18: 致命错误:zlib.h:没有那个文件或目录
#include <zlib.h>
^
编译中断。
make: *** [credential-store.o] 错误 1

错误指出没有zlib,yum -y install zlib安装,发现已经安装,zlib.h应该是对应的开发包没有,yum -y install zlib-devel安装开发包

9、再执行make all doc,再出现错误:

/bin/sh:行1: asciidoc: 未找到命令
make[1]: *** [git-init-db.html] 错误 127
make[1]: 离开目录“/opt/git-2.19.0/Documentation”
make: *** [doc] 错误 2

没有asciidoc命令,yum list asciidoc发现包没有安装,yum -y install asciidoc安装该包。

10、再一次执行make all doc,仍出现错误:

/bin/sh:行1: xmlto: 未找到命令
make[1]: *** [git-init-db.1] 错误 127
make[1]: 离开目录“/opt/git-2.19.0/Documentation”
make: *** [doc] 错误 2

思路一样,没有xmlto命令,yum list xmlto发现包没有安装, yum -y install xmlto安装该包,执行make all doc这下很顺利。

11、执行make install install-doc install-html,这下安装很顺利,没有再提示错误。

12、测试一下,执行git --version正常显示:

git version 2.19.0

终于安装成功了,可以正常使用。

13、按上面的库虽然安装成功了,但有一个问题,就是采用Https方式push到github上,或clone到本地的时候就出错了,主要错误提示是:

“fatal: 无法为 'https' 找到远程助手”

直接通过curl https://github.com了产生同样的错误,判断应该是编译时没有SSL这块的东西,查了一些贴子,各种说法都有,

升级curl到最新版本也没用,最后认真看一下官方手册,参考:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git

最小化安装的centos7.5上编译安装git2.19

同时,对比一下安装上述库和没有安装时进行./configure --prefix=/usr后进结果发现:

没有全部安装上述GIT依赖的库 全部安装上述GIT依赖的库

configure: CHECKS for libraries
checking for SHA1_Init in -lcrypto... no
checking for SHA1_Init in -lssl... no
checking for curl_global_init in -lcurl... no
checking for XML_ParserCreate in -lexpat... no
checking for iconv in -lc... yes
checking for deflateBound in -lz... no
checking for socket in -lc... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for hstrerror... yes
checking for basename in -lc... yes
checking for gettext in -lc... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes

configure: CHECKS for libraries
checking for SHA1_Init in -lcrypto... yes
checking for curl_global_init in -lcurl... yes
checking for curl-config... curl-config
checking if Curl supports SSL... yes
checking for XML_ParserCreate in -lexpat... yes
checking for iconv in -lc... yes
checking for deflateBound in -lz... yes
checking for socket in -lc... yes
checking for inet_ntop... yes
checking for inet_pton... yes
checking for hstrerror... yes
checking for basename in -lc... yes
checking for gettext in -lc... yes
checking libintl.h usability... yes
checking libintl.h presence... yes
checking for libintl.h... yes

总结一下:

没按要求安装 Git 依赖的库时,本地git功能使用没有问题,采用SSH方式push到github也没有问题,就是不能采用https方式。

要正常使用git的https方式push,必须安装下列库后再编译:

yum install  gcc perl-ExtUtils-MakeMaker

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto

另外 ,curl命令访问https域名出问题时,可能的原因是nss版本有点旧了,yum -y update nss更新一下就可以正常使用。