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

我用了通常的:

yum install git

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

271907 次浏览

看了一下博客在这里,我在其中一个评论中找到了解决方案。确保你已经将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为enabled, yum update git

.

.

.

说明更新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

卸载旧的Git RPM

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

# yum remove git

下载并编译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
< p >提示1: 更新了将编译好的git bin目录添加到bashrc的方法。因为echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc使用""而不是",它将扩展当前会话的$PATH值,而不是将其作为一个变量,并可能对整个系统产生不利影响。至少,它应该使用“而不是”,并且应该是/etc/profile.d/

中的一个单独的脚本

提示2 (@ dj): /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

我找到了这个简单易用的指南,教你如何下载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

卸载旧的Git RPM

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

# yum remove git

下载并编译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

您可以使用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. Install the latest version of Git 2.x:

    yum install git
    
  3. Verify the version of Git that was installed:

    git --version
    

As of 02 Mar. 2020, the latest available version from WANDisco is 2.22.0.

在没有经过大量测试和思考的情况下,将上游基础存储库替换为附加存储库,这是非常令人困惑和危险的。尤其是RPMforge,实际上已经奄奄一息,并且没有得到更新。

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

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

程序如下:

  1. 获取源rpm或合适的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. Add a rpm build user account (do not build as root or as a real user - security issues will come back to bite you).

    sudo adduser builder --home-dir /home/builder \
    --create-home --user-group --groups mock \
    --shell /bin/bash --comment "rpm package builder"
    
  4. Next we need a build environment.

    su -l builder
    rpmdev-setuptree
    

    这将产生以下目录结构:

    ~
    └── rpmbuild
    ├── BUILD
    ├── RPMS
    ├── SOURCES
    ├── SPECS
    └── SRPMS
    
  5. We are using a prepared SRPMS so the SOURCES tarballs can be ignored for this case and we can go direct to 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. Configure mock (as 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. If we were building from SOURCES then this is where we would employ the SPEC file and use mock --buildsrpm . . .. But in this case we go directly to the binary build step:

    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中;或者在您提供的任何自定义构建根位置和体系结构中。这需要很长时间。这个方案有很多内容;尤其是文档。< / p >

  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. Install using yum or rpm.

    You will require git2u-2.5.3-1.ius.el6.x86_64.rpm at a minimum and such additional support packages as it requires (perl-Git2u-2.5.3-1.ius.el6.noarch.rpm) or you desire.

    This build has a cyclic dependency: git2u-2.5.3-1.ius.el6.x86_64.rpm depends upon perl-Git2u-2.5.3-1.ius.el6.noarch.rpm and perl-Git2u-2.5.3-1.ius.el6.noarch.rpm depends upon git2u-2.5.3-1.ius.el6.x86_64.rpm. A straight install with rpm will thus fail.

    There are two ways of dealing with it:

    • Install both at the same time via yum:

      yum localinstall \
      git2u-2.5.3-1.ius.el6.x86_64.rpm \
      perl-Git2u-2.5.3-1.ius.el6.noarch.rpm`
      
    • Setup a local yum repo.

      I am including my LocalFile.repo file below as it contains instructions on how to do this and provides the necessary repo file at the same time.

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

要在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

Rackspace维护国际单位库,其中包含一个相当最新的git,但必须首先删除库存git。

CentOS 6或7指令(以root用户或sudo运行):

# retrieve and check CENTOS_MAIN_VERSION (6 or 7):
CENTOS_MAIN_VERSION=$(cat /etc/centos-release | awk -F 'release[ ]*' '{print $2}' | awk -F '.' '{print $1}')
echo $CENTOS_MAIN_VERSION
# output should be "6" or "7"


# Install IUS Repo and Epel-Release:
yum install -y https://repo.ius.io/ius-release-el${CENTOS_MAIN_VERSION}.rpm
yum install -y epel-release


# re-install git:
yum erase -y git*
yum install -y git-core


# check version:
git --version
# output: git version 2.24.3

注意:git-all而不是git-core通常会安装旧版本。可以试试git224-all

该脚本在CentOS 7 docker映像(7e6257c9f8d8)和CentOS 6 docker映像(d0957ffdf8a2)上进行测试。

下面是我在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

在这里补充一个拐弯抹角的答案。我在一个RHEL 6.0的Amazon实例上努力安装git,最终拯救我的是……conda,如Anaconda 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版本。今天是12/26/2016,版本是2.9.3。

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

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

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

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

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

准备系统建立rpm

  1. < p >安装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. Install fedpkg:

    sudo yum install fedpkg
    
  3. Add yourself into group mock (you might need to re-login to server after this change):

    sudo usermod -a -G mock $USER
    

Download git

  1. Download git sources:

    fedpkg clone -a git && cd git
    fedpkg sources
    
  2. Verify sources:

    sha512sum -c sources
    

Build rpm

  1. Create srmp. Use el6 for RHEL6, el7 for RHEL7.

    fedpkg --dist el7 srpm
    
  2. Build package in mock:

    mock -r epel-7-x86_64 git-2.16.0-1.el7.src.rpm
    
  3. Install latest version of git rpm from /var/lib/mock/epel-7-x86_64/result/. Note, you might need to uninstall existing version of the git from your system first.

This instruction is based on the mailing list post by Todd Zullinger.

正如git所说:

RHEL及其衍生产品通常发布较旧版本的git。你可以 下载一个压缩包并从源代码构建,或者使用第三方 如IUS社区项目的存储库,以获得最新的

有很好的教程在这里。 在我的情况下(Centos7服务器)安装后不得不注销并再次登录。< / p >

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

sudo yum remove git*

并安装最新版本的git

yum install -y git-core
< p >检查版本 git -版本< / p >

宾果!

本指南工作:

# hostnamectl
Operating System: CentOS Linux 7 (Core)
# git --version
git version 1.8.3.1
# sudo yum remove git*
# sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
# sudo yum install git
# git --version
git version 2.24.1