如何在CentOS 7.x / 6.x上安装最新版本的git

问题描述 投票:201回答:12

我常用的是:

yum install git

它没有在我的CentOS 6上安装最新版本的git。如何更新到CentOS 6的最新版本的git?该解决方案适用于较新版本的CentOS,如CentOS 7。

linux git installation centos yum
12个回答
271
投票

您可以使用WANDisco的CentOS存储库来安装Git 2.x:for CentOS 6,for CentOS 7

  1. 安装WANDisco repo包: yum install http://opensource.wandisco.com/centos/6/git/x86_64/wandisco-git-release-6-1.noarch.rpm - or - yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-1.noarch.rpm - or - yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
  2. 安装最新版本的Git 2.x: yum install git
  3. 验证已安装的Git版本: git --version

截至2019年4月24日,WANDisco的最新版本为2.18.0。


1
投票

这是我在centos 6上安装git的方法。

sudo yum groupinstall "Development Tools"
sudo yum install zlib-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel curl-devel
sudo yum install wget
cd ~
wget -O git.zip https://github.com/git/git/archive/v2.7.2.zip
unzip git.zip
cd git-2.7.2
make configure
./configure --prefix=/usr/local
make all doc
sudo make install install-doc install-html

1
投票

这可能是无关紧要的。这是因为人们不想在主机上构建最新的git,同时他们仍然可以获得最新的git。

我想大多数人不喜欢在CentOS上构建最新的git,因为依赖关系会污染主机,你必须运行很多命令。因此,我有一个想法,即在Docker容器中构建git,然后通过docker volume mount安装可执行文件。之后,您可以删除图像和容器。

是的,缺点是你必须安装docker。但是最少的依赖项被引入主机,您不必安装其他yum repo。

这是我的存储库。 https://github.com/wood1986/docker-library/tree/master/git


-3
投票

在没有经过大量测试和思考的情况下,用附加存储库替换上游基础存储库可能会非常混乱和危险。特别是RPMforge实际上是垂死的,并没有获得更新。

我个人发布了用于构建git 2.4的工具,在https://github.com/nkadel/git24-srpm/上包装为一个名为“git24”的软件包。如果您希望包与标准系统包区分开来,请随意访问和分叉,就像“samba”和“samba4”包的区别一样。


129
投票

看看博客here,我在其中一条评论中找到了解决方案。确保将rpmforge存储库添加到CentOS yum并运行flow命令:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras install git

如果你已经安装了git,那么使用:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras update git

相关问题:

  1. Facing issues while upgrading git to latest version on CentOS 6.4

Note update:

感谢Anthony Hatzopoulos,对于git v1.8x,你需要使用git18,如:

yum --disablerepo=base,updates --enablerepo=rpmforge-extras install git18 

Note update 2:

还要感谢@Axlrod的以下提示和@Hiphip的反馈:

更改rpmforge.repo文件以启用rpmforge-extrasyum update git。否则它抱怨依赖问题。

Note update 3:

安装特定版本的git说2.x我发现这个很好且易于遵循的指南,介绍如何下载GIT源代码并自行编译(并安装它)。如果接受的答案没有提供您想要的版本,请尝试以下说明:

http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/

(并在以后删除时从上面的源粘贴/重新格式化)

第1步:安装必需的包

首先,我们需要确保在您的系统上安装了所需的软件包。在编译Git源之前,使用以下命令安装所需的包。

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

第2步:卸载旧的Git RPM

现在通过RPM文件或Yum包管理器删除任何先前安装的Git。如果您的旧版本也是通过源代码编译的,则跳过此步骤。

# yum remove git

第3步:下载并编译Git源代码

从内核git下载git源代码或只需使用以下命令下载Git 2.0.4。

# cd /usr/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.0.4.tar.gz
# tar xzf git-2.0.4.tar.gz

下载并解压缩Git源代码后,使用以下命令编译源代码。

# cd git-2.0.4
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
#
# echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc
#  or
# echo 'export PATH=$PATH:/usr/local/git/bin' > /etc/profile.d/git.sh
#
# source /etc/bashrc

提示1:更新了将已编译的git bin目录添加到bashrc的方法。因为echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc使用“”代替'',它会扩展$ PATH的当前会话值,而不是将其保留为变量,并可能对整个系统产生负面影响。至少,它应该使用''而不是“”,并且应该真的是/etc/profile.d/中的单独脚本

提示2(@DJB):在/usr/local/git/bin之前的$PATH,因为旧版本的git已经在$ PATH:export PATH=/usr/local/git/bin:$PATH

步骤4.检查Git版本

完成上述步骤后,您已成功在系统中安装Git。让我们使用以下命令检查git版本

# git --version

git version 2.0.4

我还想补充一点,GIT网站上的“入门”指南还包括如何自行下载和编译的说明:

http://git-scm.com/book/en/v2/Getting-Started-Installing-Git


81
投票

我发现了这个很好且易于遵循的指南,介绍了如何下载GIT源代码并自行编译(并安装它)。如果接受的答案没有提供您想要的版本,请尝试以下说明:

http://tecadmin.net/install-git-2-0-on-centos-rhel-fedora/

(并在以后删除时从上面的源粘贴/重新格式化)

第1步:安装必需的包

首先,我们需要确保在您的系统上安装了所需的软件包。在编译Git源之前,使用以下命令安装所需的包。

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

第2步:卸载旧的Git RPM

现在通过RPM文件或Yum包管理器删除任何先前安装的Git。如果您的旧版本也是通过源代码编译的,则跳过此步骤。

# yum remove git

第3步:下载并编译Git源代码

从内核git下载git源代码或者只需使用以下命令下载Git 2.5.3。

# cd /usr/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.5.3.tar.gz
# tar xzf git-2.5.3.tar.gz

下载并解压缩Git源代码后,使用以下命令编译源代码。

# cd git-2.5.3
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
# echo 'pathmunge /usr/local/git/bin/' > /etc/profile.d/git.sh 
# chmod +x /etc/profile.d/git.sh
# source /etc/bashrc

步骤4.检查Git版本

完成上述步骤后,您已成功在系统中安装Git。使用以下命令检查git版本

# git --version

git version 2.5.3

我还想补充一点,GIT网站上的“入门”指南还包括如何自行下载和编译的说明:

http://git-scm.com/book/en/v2/Getting-Started-Installing-Git


80
投票

Rackspace维护着ius repository,它包含一个合理的最新git,但必须先删除stock git。

CentOS 7说明:

$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm
$ sudo yum erase git
$ sudo yum install epel-release 
$ sudo yum install git2u

CentOS 6说明:

$ sudo yum install https://centos6.iuscommunity.org/ius-release.rpm
$ sudo yum erase git
$ sudo yum install epel-release
$ sudo yum install git2u

9
投票

我个人倾向于在安装非标准软件和更换分布式组件时为CentOS构建rpm包。为此,我建议您使用Mock创建一个干净的构建环境。

程序是:

  1. 获取源RPMS或合适的SPEC文件和原始源tarball。在这种情况下,可以在:http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/找到适用于CentOS-6的git2X的源RPM包。其他CentOS版本的软件包也可用。
  2. 安装必要的支持软件: yum install epel-release # you need this for mock yum install rpm-build yum install redhat-rpm-config yum install rpmdevtools yum install mock
  3. 添加一个rpm构建用户帐户(不要以root用户身份或以真实用户身份构建 - 安全问题会再次出现在你面前)。 sudo adduser builder --home-dir /home/builder \ --create-home --user-group --groups mock \ --shell /bin/bash --comment "rpm package builder"
  4. 接下来我们需要一个构建环境。 su -l builder rpmdev-setuptree 这会产生以下目录结构: ~ └── rpmbuild ├── BUILD ├── RPMS ├── SOURCES ├── SPECS └── SRPMS
  5. 我们正在使用准备好的SRPMS,因此在这种情况下可以忽略SOURCES tarball,我们可以直接转到SRPMS。 wget http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm \ -O ~/rpmbuild/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm
  6. 配置mock(以root身份) cd /etc/mock rm default.cfg ln -s epel-6-x86_64.cfg default.cfg vim default.cfg 禁用beta repos。启用baseupdate repos。
  7. 初始化构建树(默认为/ var / lib / mock) mock --init
  8. 如果我们从SOURCES构建,那么我们将使用SPEC文件并使用mock --buildsrpm . . .。但在这种情况下,我们直接进入二进制构建步骤: mock --no-clean --rebuild ~/rpmbuild/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm 这将解析构建依赖关系并将它们(大约95个左右的包)下载到干净的构建根目录中。然后它将从提供的SRPM中提取源并构建二进制文件并将其保留在/var/lib/mock/epel-6-x86_64/result中;或者您提供的任何自定义构建根位置和体系结构。这需要很长时间。这个包有很多东西;特别是文件。
  9. 如果一切顺利,那么你应该得到一套适合安装的RPM套件来代替发行版。这就是我最终得到的结果: ll /var/lib/mock/epel-6-x86_64/result total 34996 -rw-rw-r--. 1 byrnejb mock 448455 Oct 30 10:09 build.log -rw-rw-r--. 1 byrnejb mock 52464 Oct 30 10:09 emacs-git2u-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 47228 Oct 30 10:09 emacs-git2u-el-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 8474478 Oct 30 09:57 git2u-2.5.3-1.ius.el6.src.rpm -rw-rw-r--. 1 byrnejb mock 8877584 Oct 30 10:09 git2u-2.5.3-1.ius.el6.x86_64.rpm -rw-rw-r--. 1 byrnejb mock 27284 Oct 30 10:09 git2u-all-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 27800 Oct 30 10:09 git2u-bzr-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 112564 Oct 30 10:09 git2u-cvs-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 436176 Oct 30 10:09 git2u-daemon-2.5.3-1.ius.el6.x86_64.rpm -rw-rw-r--. 1 byrnejb mock 15858600 Oct 30 10:09 git2u-debuginfo-2.5.3-1.ius.el6.x86_64.rpm -rw-rw-r--. 1 byrnejb mock 60556 Oct 30 10:09 git2u-email-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 274888 Oct 30 10:09 git2u-gui-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 79176 Oct 30 10:09 git2u-p4-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 483132 Oct 30 10:09 git2u-svn-2.5.3-1.ius.el6.x86_64.rpm -rw-rw-r--. 1 byrnejb mock 173732 Oct 30 10:09 gitk2u-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 115692 Oct 30 10:09 gitweb2u-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 57196 Oct 30 10:09 perl-Git2u-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 89900 Oct 30 10:09 perl-Git2u-SVN-2.5.3-1.ius.el6.noarch.rpm -rw-rw-r--. 1 byrnejb mock 101026 Oct 30 10:09 root.log -rw-rw-r--. 1 byrnejb mock 980 Oct 30 10:09 state.log
  10. 使用yum或rpm安装。 您至少需要git2u-2.5.3-1.ius.el6.x86_64.rpm以及您需要的其他支持包(perl-Git2u-2.5.3-1.ius.el6.noarch.rpm)或您想要的。 这个版本具有循环依赖性:git2u-2.5.3-1.ius.el6.x86_64.rpm依赖于perl-Git2u-2.5.3-1.ius.el6.noarch.rpmperl-Git2u-2.5.3-1.ius.el6.noarch.rpm依赖于git2u-2.5.3-1.ius.el6.x86_64.rpm。因此,使用rpm进行直接安装将会失败。 有两种方法可以处理它: 通过yum同时安装两个: yum localinstall \ git2u-2.5.3-1.ius.el6.x86_64.rpm \ perl-Git2u-2.5.3-1.ius.el6.noarch.rpm` 设置本地yum回购。 我在下面包含我的LocalFile.repo文件,因为它包含有关如何执行此操作的说明,并同时提供必要的repo文件。
cat /etc/yum.repos.d/LocalFile.repo
# LocalFile.repo
#
#  This repo is used with a local filesystem repo.
#
# To use this repo place the rpm package in /root/RPMS/yum.repo/Packages.
# Then run: createrepo --database --update /root/RPMS/yum.repo.
#
# To use:
#  yum --enablerepo=localfile [command]
#  
# or to use only ONLY this repo, do this:
#
#  yum --disablerepo=\* --enablerepo=localfile [command]

[localfile]
baseurl=file:///root/RPMS/yum.repo
name=CentOS-$releasever - Local Filesystem repo

# Before persistently enabling this repo see the priority note below.
enabled=0
gpgcheck=0

# When this repo is enabled all packages in repos with priority>5
# will not be updated even when they have a more recent version.
# Be careful with this.
priority=5

您可能还需要手动预安装其他依赖包,例如通常的存储库中提供的perl-TermReadKey


5
投票

在CentOS 6上构建和安装现代Git:

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
export GIT_VERSION=2.6.4
mkdir /root/git
cd /root/git
wget "https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz"
tar xvzf "git-${GIT_VERSION}.tar.gz"
cd git-${GIT_VERSION}
make prefix=/usr/local all
make prefix=/usr/local install
yum remove -y git
git --version # should be GIT_VERSION

4
投票

as git says

RHEL和衍生产品通常都会发布旧版本的git。您可以从源代码下载tarball并构建,或使用第三方存储库(如IUS社区项目)来获取更新版本的git。

有很好的教程here。在我的情况下(Centos7服务器)安装后必须注销并再次登录。


3
投票

在这里添加一个回旋答案。我正在努力在RHEL 6.0亚马逊实例上安装git,最终拯救我的是... conda,就像在Anaconda Python中一样。

我在archives的命令行上安装了conda(代码在this之后建模):

wget http://repo.continuum.io/miniconda/Miniconda2-4.2.12-Linux-x86_64.sh -O ~/miniconda.sh
bash ~/miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"

然后跑了

conda install git

并安装了一个相对较新的版本git。今天是2016年12月26日,版本是2.9.3。


3
投票

Build latest version of git on Centos 6/7

准备系统来构建rpm

  1. 安装epel: 对于EL6,请使用: sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm 对于EL7,请使用: sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  2. 安装fedpkgsudo yum install fedpkg
  3. 将自己添加到组模拟中(在此更改后您可能需要重新登录到服务器): sudo usermod -a -G mock $USER

下载git

  1. 下载git来源: fedpkg clone -a git && cd git fedpkg sources
  2. 验证来源: sha512sum -c sources

建立rpm

  1. 创建srmp。使用el6用于RHEL6,使用el7用于RHEL7。 fedpkg --dist el7 srpm
  2. 在mock中构建包: mock -r epel-7-x86_64 git-2.16.0-1.el7.src.rpm
  3. git安装最新版本的/var/lib/mock/epel-7-x86_64/result/ rpm。注意,您可能需要先从系统中卸载现有版本的git。

该说明基于the mailing list post by Todd Zullinger

© www.soinside.com 2019 - 2024. All rights reserved.