文章目录

  • CentOS 7 - 安装 Git
  • 环境信息
  • 准备
  • GCC - C & C++ 编译器
  • Wget - 非交互式网络下载器
  • 安装
  • 下载源码包
  • 重新编译与安装
  • 重新编译的过程可能遇到的错误
  • 错误 1 - fatal error: openssl/ssl.h: No such file or directory
  • 错误 2 - fatal error: curl/curl.h: No such file or directory
  • 错误 3 - fatal error: expat.h: No such file or directory
  • 安装完成
  • 参考

CentOS 7 - 安装 Git

环境信息

操作系统

# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
# uname --kernel-release
3.10.0-1062.el7.x86_64

准备

如果当初你在安装 CentOS 7 的时候,采用的是最小安装方式,那么你可能需要安装这两个工具:GCC 和 Wget。

GCC - C & C++ 编译器

在安装 Git 之前,需要确认系统中是否已经安装 GCC。可以通过执行命令 gcc --version 查看版本信息,判断是否已经安装 GCC。

如果你的操作系统中没有预装 GCC,可以执行命令 yum install --assumeyes gcc 安装 GCC。

Wget - 非交互式网络下载器

我将使用 Wget 下载 Git 的源码包。当然,你也可以使用其他方式。

如果你打算采用这种方式,并且你的操作系统中没有安装这个工具,那么你可以执行命令 yum install --assumeyes wget 安装 Wget。

安装

Download for Linux and Unix 中,提供了不同 Linux 操作系统安装 Git 的方法:

centos 安装gitlab最新版 centos7安装git_CentOS

由于 RHEL 及其衍生的操作系统中提供的 Git 版本较老,如果打算安装较新的 Git 版本,则需下载 tar 压缩包并从源码中构建,或者使用第三方仓库。

接下来,我将采用从源码构建的方式安装 Git。

下载源码包

根据 Download for Linux and Unix 中的提示,访问 https://mirrors.edge.kernel.org/pub/software/scm/git/,找到你想要下载的源码包,右击选择“复制链接地址”:

centos 安装gitlab最新版 centos7安装git_源码包_02

回到 CentOS 7 系统终端,使用命令 wget 下载 Git 源码包:

# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.27.0.tar.gz

注意:以上命令执行完成之后,所下载的文件被保存在当前工作目录中,使用命令 pwd 可以查看当前工作目录。

下载完成,解压下载的文件:

# tar -zxvf git-2.27.0.tar.gz

重新编译与安装

在 Git 的安装说明中提到,可以直接使用命令 makemake install 安装 Git,这将 Git 安装到 ~/bin/ 目录中(~ 是指当前登录用户的 Home 目录):

centos 安装gitlab最新版 centos7安装git_源码包_03

如果你需要个性化安装 Git,可以访问 https://github.com/git/git/blob/master/INSTALL 获取详细的信息。

此处,我采用最简单的方式安装 Git。进入解压得到的 Git 文件夹,依次执行命令 makemake install 即可。

重新编译的过程可能遇到的错误

在使用命令 make 重新编译 Git 的某些源文件时,你可能会遇到以下这些错误:

错误 1 - fatal error: openssl/ssl.h: No such file or directory
GIT_VERSION = 2.27.0
make: curl-config: Command not found
    * new build flags
    CC fuzz-commit-graph.o
In file included from commit-graph.h:4:0,
                 from fuzz-commit-graph.c:1:
git-compat-util.h:297:25: fatal error: openssl/ssl.h: No such file or directory
 #include <openssl/ssl.h>
                         ^
compilation terminated.
make: *** [fuzz-commit-graph.o] Error 1

解决方法:执行 yum install --assumeyes openssl-devel 命令安装即可。

错误 2 - fatal error: curl/curl.h: No such file or directory
... 省略部分信息
In file included from http.c:2:0:
http.h:6:23: fatal error: curl/curl.h: No such file or directory
 #include <curl/curl.h>
                       ^
compilation terminated.
make: *** [http.o] Error 1

解决方法:执行 yum install --assumeyes curl-devel 命令安装即可。

错误 3 - fatal error: expat.h: No such file or directory
... 省略部分信息
http-push.c:22:19: fatal error: expat.h: No such file or directory
 #include <expat.h>
                   ^
compilation terminated.
make: *** [http-push.o] Error 1

解决方法:执行 yum install --assumeyes expat-devel 命令安装即可。

安装完成

查看 Git 的安装目录,执行命令 ll ~/bin/

# ll ~/bin/
total 72508
-rwxr-xr-x. 130 root root 16047136 Jul 23 19:09 git
-rwxr-xr-x.   2 root root   162732 Jul 23 19:09 git-cvsserver
-rwxr-xr-x.   1 root root   353477 Jul 23 19:09 gitk
-rwxr-xr-x. 130 root root 16047136 Jul 23 19:09 git-receive-pack
-rwxr-xr-x.   2 root root  9534288 Jul 23 19:09 git-shell
-rwxr-xr-x. 130 root root 16047136 Jul 23 19:09 git-upload-archive
-rwxr-xr-x. 130 root root 16047136 Jul 23 19:09 git-upload-pack

查看 Git 版本信息:

# git --version
git version 2.27.0

参考

https://git-scm.com/download/linux

https://github.com/git/git/blob/master/INSTALL

fatal error: openssl/ssl.h: No such file or directory

http.h:6:23: fatal error:curl/curl.h:there is no this file/directory

fatal error: expat.h: No such file or directory

linux devel包 和 非devel包的区别