Linux 自动获取最新版 Git 并编译安装

自动获取 Git 最新正式版源码,并按不同 Linux 发行版准备依赖、编译安装。

适用范围

本文自动获取 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

验证安装

1
git --version

安装后通过 /usr/local/bin/git 使用源码编译的版本。

参考:Git 官方安装与源码编译说明。

延伸阅读

使用 Hugo 构建
主题 Stack 由 Jimmy 设计