适用范围
本文自动获取 Git 最新正式版并编译安装。编译流程可用于多种 Linux 发行版,依赖安装按系统分别列出 Debian/Ubuntu、Fedora 和旧 CentOS 7 示例。
下面只构建 Git 程序,不包含额外文档生成。Git 版本与旧系统编译器、开发库的兼容性仍需确认;不能保证最新版可在旧 CentOS 7 上构建。
按发行版安装依赖
Debian/Ubuntu 示例:
1
2
3
| sudo apt-get update
sudo apt-get install -y build-essential autoconf dh-autoreconf \
libcurl4-gnutls-dev libexpat1-dev gettext zlib1g-dev libssl-dev perl curl
|
Fedora 等使用 DNF 的系统示例:
1
2
| sudo dnf install -y gcc make autoconf dh-autoreconf curl curl-devel \
expat-devel gettext-devel openssl-devel perl-devel zlib-devel
|
旧 CentOS 7 的历史依赖示例:
1
2
| sudo yum install -y gcc make autoconf curl curl-devel expat-devel \
gettext openssl-devel perl-devel zlib-devel
|
选择自己系统对应的一组命令;软件源或包名有差异时先核对。无需为了并行安装源码版而卸载系统 Git。
自动获取最新版 Git
从 Git 官方源码发布目录 自动获取最新正式版本号:
1
2
3
| git_version=$(curl -fsSL https://www.kernel.org/pub/software/scm/git/ \
| sed -n 's/.*href="git-\([0-9.]*\)\.tar\.gz".*/\1/p' \
| sort -V | tail -n 1)
|
下载源码
1
2
3
| curl -fLO "https://www.kernel.org/pub/software/scm/git/git-${git_version}.tar.gz" \
&& tar -zxf "git-${git_version}.tar.gz" \
&& cd "git-${git_version}"
|
保留版本号变量,在同一 Shell 中完成后续操作;下载失败时不要继续解压。
编译与安装
安装到独立目录,保留发行版管理的 Git:
1
2
3
4
5
| make configure
./configure --prefix="/usr/local/git-${git_version}"
make -j2
sudo make install
sudo ln -s "/usr/local/git-${git_version}/bin/git" /usr/local/bin/git
|
验证安装
安装后通过 /usr/local/bin/git 使用源码编译的版本。
参考:Git 官方安装与源码编译说明。
延伸阅读