首页 文章

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

提问于
浏览
182

我常用的是:

yum install git

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

12 回答

  • 126

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

    • 安装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
    
    • 安装最新版本的Git 2.x:
    yum install git
    
    • 验证已安装的Git版本:
    git --version
    

    截至2017年8月18日,WANDisco的最新版本为 2.14.1 .

  • 0

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

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

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

    yum --disablerepo=base,updates --enablerepo=rpmforge-extras update 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说2.x我发现这个很好且易于理解的指南,介绍如何下载GIT源代码并自行编译(并安装它) . 如果接受的答案没有提供您想要的版本,请尝试以下说明:

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

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

    Step 1: 安装必需的包

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

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

    Step 2: 卸载旧的Git RPM

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

    # yum remove git
    

    Step 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/HINT 2(@DJB):/ usr / local / git / bin之前真正是一个单独的脚本,因为旧的git的版本已经在$ PATH上:export PATH = / usr / local / git / bin:$ PATH

    Step 4. 检查Git版本

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

    # git --version
    
    git version 2.0.4
    

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

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

  • 9

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

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

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

    Step 1: 安装必需的包

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

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

    Step 2: 卸载旧的Git RPM

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

    # yum remove git
    

    Step 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
    

    Step 4. 检查Git版本

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

    # git --version
    
    git version 2.5.3
    

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

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

  • 1

    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
    
  • 75

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

    程序是:

    • 获取源RPMS或合适的SPEC文件和原始源tarball . 在这种情况下,可以在以下位置找到适用于CentOS-6的git2X的源RPM包: http://dl.iuscommunity.org/pub/ius/archive/CentOS/6/SRPMS/ . 其他CentOS版本的软件包也可用 .

    • 安装必要的支持软件:

    yum install epel-release  # you need this for mock
    yum install rpm-build
    yum install redhat-rpm-config
    yum install rpmdevtools
    yum install mock
    
    • 添加一个rpm构建用户帐户(不要以root用户身份或以真实用户身份构建 - 安全问题 will 回来咬你) .
    sudo adduser builder --home-dir /home/builder \
    --create-home --user-group --groups mock \
    --shell /bin/bash --comment "rpm package builder"
    
    • 接下来我们需要一个构建环境 .
    su -l builder
    rpmdev-setuptree
    

    这会产生以下目录结构:

    ~
    └── rpmbuild
        ├── BUILD
        ├── RPMS
        ├── SOURCES
        ├── SPECS
        └── SRPMS
    
    • 我们正在使用准备好的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
    
    • 配置mock(以root身份)
    cd /etc/mock
    rm default.cfg
    ln -s epel-6-x86_64.cfg default.cfg
    vim default.cfg
    

    禁用 beta repos . 启用 baseupdate repos .

    • 初始化构建树(默认为/ var / lib / mock)
    mock --init
    
    • 如果我们从SOURCES构建,那么我们将使用SPEC文件并使用 mock --buildsrpm . . . . 但在这种情况下,我们直接进入二进制构建步骤:
    mock --no-clean --rebuild ~/rpmbuild/SRPMS/git2u-2.5.3-1.ius.centos6.src.rpm
    

    这将解析构建依赖关系并将它们(大约95个左右的包)下载到干净的构建根目录中 . 然后它将从提供的SRPM中提取源并构建二进制文件并将其保留在_841026中;或者您提供的任何自定义构建根位置和体系结构 . 这将需要很长时间 . 这个包有很多东西;特别是文件 .

    • 如果一切顺利,那么你应该得到一套适合安装的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
    
    • 使用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 .

  • -3

    在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
    
  • 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 .

  • 5

    这是我在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

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

    准备系统来构建rpm

    • 安装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
    
    • 安装 fedpkg
    sudo yum install fedpkg
    
    • 将自己添加到组模拟中(在此更改后您可能需要重新登录到服务器):
    sudo usermod -a -G mock $USER
    

    下载git

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

    构建rpm

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

    该指令基于the mailing list post by Todd Zullinger .

  • 217

    as git says

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

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

  • 67

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

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

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

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

  • 1

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

    我个人发布了用于构建git 2.4的工具,它包含在一个名为"git24"的软件包中,位于https://github.com/nkadel/git24-srpm/ . 如果你想要的包装区别于,请随意访问和分叉标准系统包,与"samba"和"samba4"包有很大区别 .

相关问题