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


232

我使用了通常的方法:

yum install git

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


11
是的。当尚未解决有用的信息时,完全可以提问并回答。
Tin Man

Answers:


337

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

  1. 安装WANDisco回购软件包:

    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
    

截至2020年3月2日,WANDisco的最新可用版本为2.22.0


9
必须采用此答案。已经应用的答案--disablerepo=base,updates对我不起作用。
柯比

1
FWIW,截至2016-11-08,GAND的WANDisco版本达到2.10版本;与Git SCM官方发行版完全一致。
JakeGould

6
这是为我工作的那个。比接受的答案简单得多。
Ben Watson

1
截至2019年2月,此存储库似乎已停止获取更新:最新的git是v2.20.1,但该存储库仅v2.18.0
IanB

1
pgp密钥无法通过https使用,其他人可以验证吗?
user3338098

134

这里看一下博客我在其中的一条评论中找到了解决方案。确保rpmforge已将存储库添加到您的CentOS yum中,然后运行以下命令:

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

如果您已经安装了git,请使用:

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

相关问题:

  1. 在CentOS 6.4上将git升级到最新版本时遇到的问题

笔记更新:

感谢Anthony Hatzopoulos,git v1.8x您需要像下面这样使用git18:

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

注释更新2:

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

rpmforge.repo文件更改为必须rpmforge-extras启用 yum update git。否则,它抱怨依赖问题。

笔记更新3:

安装特定版本的git say 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


3
这只给了我git v1.7x。对于git的v1.8x你需要使用git18作为yum --disablerepo=base,updates --enablerepo=rpmforge-extras install git18
安东尼HATZOPOULOS

2
不适用于我,我必须更改rpmforge.repo文件以启用rpmforge-extras,然后执行yum update git。否则,它抱怨依赖问题。(因为它需要基础包装)
Alex R

5
获取rpmforge-extras的存储库数据时出错,找不到存储库-cent6.6上的第一个cmd
Nithin

2
yum --disablerepo=base,updates --enablerepo=rpmforge-extras list | grep git在Centos 6.6上,“ 运行” 仅显示Git 1.7.12。也许他们已经删除了“ git18”?
Joseph Leedy 2014年

26
wiki.centos.org/AdditionalResources/Repositories/RPMForge RPMForge / RepoForge是一个无效的项目。不维护。不使用。
莫兹·扎多克

91

Rackspace维护ius存储库,其中包含一个合理的最新git,但是必须首先删除库存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

真好!那些rpmforge编译指令不起作用Can't locate ExtUtils/MakeMaker.pm in @INC
Nakilon

今天,这个为我工作了最近的centos,其他的已经过时了。
user5389726598465

3
这是我尝试过的唯一方法(截至2018年9月7日),它确保CentOS的最新2.x git 确保git-credential-libsecret已安装编译器,这是最安全的本地方法用于存储git凭证,例如用于http [s] URL。撰写本文时当前接受的答案(stackoverflow.com/a/21820716/407170)不执行这些操作,并且需要您自己编译。
Les Hazlewood

如果你想使用这个自动Ansible,我建议检查出github.com/iuscommunity/automation-examples/blob/...(或github.com/iuscommunity/automation-examples其他的解决方案)
jbmusso

84

我找到了这个不错的,易于遵循的指南,该指南介绍了如何下载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


1
重新执行第3步。设置路径,我发现它(serverfault.com/a/303824)效果更好:#echo'pathmunge / usr / local / git / bin /'> /etc/profile.d/git.sh#chmod + x /etc/profile.d/git.sh
肯尼思·本杰明

3
我尝试使用Centos 6.5,并尝试了最新(今天)的GIT 2.5.3版,并且运行起来很吸引人。wget https://www.kernel.org/pub/software/scm/git/git-2.5.3.tar.gz
Vielinko

1
使用2.7.4和CentOS 6.5-谢谢
Moe

1
这使我可以安装2.10.1来与git本地客户端保持一致。很棒的指令集。
TinkerTenorSoftwareGuy

2
如果仍然发现未安装git,则可能是由于pathmunge所致。您可以使用以下命令在您的环境中添加git。 echo "export PATH=/usr/local/git/bin:$PATH" >> /etc/bashrc然后 source /etc/bashrc
mshakeel

10

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

程序是:

  1. 获取源RPMS或合适的SPEC文件以及原始源tarball。在这种情况下,可以在以下位置找到CentOS-6的git2X的源RPM软件包 http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/。也提供其他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压缩文件,而我们可以直接使用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. 配置模拟(作为root)

    cd /etc/mock
    rm default.cfg
    ln -s epel-6-x86_64.cfg default.cfg
    vim default.cfg
    

    禁用beta仓库。启用baseupdate仓库。

  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.rpmrpm因此,直接安装将失败。

    有两种处理方法:

    • 通过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下面包含我的文件,因为它包含有关如何执行此操作的说明,并同时提供了必要的回购文件。

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可从常规存储库中获得的程序包。


如果您不打算编辑规格文件,为什么不直接使用IUS二进制包呢?
carlwgeorge

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

5

如git所说

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

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


4

git在Centos 6/7上构建最新版本

准备建立转速的系统

  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. 安装fedpkg

    sudo 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
    

建立转速

  1. 创建srmp。使用el6了RHEL6,el7为RHEL7。

    fedpkg --dist el7 srpm
    
  2. 在模拟中构建软件包:

    mock -r epel-7-x86_64 git-2.16.0-1.el7.src.rpm
    
  3. 从安装最新版本的gitrpm /var/lib/mock/epel-7-x86_64/result/。注意,您可能需要先从系统中卸载现有版本的git。

该说明基于Todd Zullinger的邮件列表帖子


1
好答案。将其置于包装管理下。比使用非官方仓库或从源代码安装要好得多。我一直通过浏览器从Fedora软件包站点下载src软件包,但这是一个更干净的解决方案。谢谢!
orodbhen

3

在此处添加回旋处的答案。我正在努力在RHEL 6.0 Amazon实例上安装git,最终救了我的是... conda,就像Ana conda Python中一样。

我在命令行中从归档文件安装了conda (此代码建模于此):

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。


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

根据我的经验(centos 6.7),您还应该yum install libcurl-devel
jgrump2012

1

这可能无关紧要。它适用于不想在主机上构建最新git的人,同时他们仍然可以获取最新git。

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

是的,缺点是您必须安装docker。但是,将最少的依赖项引入到主机中,您不必安装其他yum存储库。

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


0

如果已经安装了git,请先删除旧的git

sudo yum remove git*

添加IUS CentOS 7存储库

sudo yum -y install  https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y install  git2u-all

现在在安装git2u-all软件包后检查git版本。如果您的计算机上安装了docker,则ius-release可能会造成问题。

git --version

答对了!!


-3

在没有进行大量测试和思考的情况下,用附加存储库替换上游基础存储库可能会造成混乱和危险。尤其是RPMforge实际上是垂死的,没有更新。

我亲自在https://github.com/nkadel/git24-srpm/上发布了用于构建git 2.4的工具,这些工具被包装为“ git24”包。如果希望将包与标准系统包区分开,则可以随意访问和派生这些包,就像“ samba”和“ samba4”包一样。


1
有时可以链接到您自己的资源/网站,但是请确保即使您的链接不起作用(顺便说一句,它已经不起作用),您的帖子仍然可以提供足够完整的答案
Hayden Schiff 2015年

请修正错字。
Stefan Lasiewski,2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.