Ubuntu下Git源码安装方法

馋奶兔 提交于 2019-12-08 15:05:49

版本信息: Ubuntu:16.04, Git版本:2.14.0


从Progit2文档中整理了一下git的源码安装,遇到了一些问题,前前后后花了不少时间,记录在此博客里。


1 下载

a. 从源码安装Git,需要安装Git依赖的库,其中包括:curl、zlib、openssl、expat,还有libiconv等,

    $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev

    为了能够添加更多格式的文档(如doc, html, info),需要使用以下命令安装依赖包(下载文件很大),

    $ sudo apt-get install asciidoc xmlto docbook2x

b. 下载最新的git版本,网址可以用 https://github.com/git/git/releases ,通常在GitHub上的是最新版本,我下载的是Releases版的。

2 编译安装

解压:tar -xvf git-latest.tar.gz

解压完毕后可以在文件目录下(我的是git-2.14.0-rc0目录)找到INSTALL文件,一般文件的安装方法都会写在INSTALL中,也有可能是README,cd到解压后的git目录下,输入 cat INSATLL 命令即可查看。文件中给出了几种安装方式,复制过来内容如下:

Normally you can just do "make" followed by "make install", and that will install the git programs in your own ~/bin/ directory.  If you want to do a global install, you can do

    $ make prefix=/usr all doc info ;# as yourself
    # make prefix=/usr install install-doc install-html install-info ;# as root

意思是既可以在解压后的目录中make,然后make install,这样git中的内容会自动放到系统默认位置,也可以采用prefix参数自己指定安装目录。我采用的是自己指定一个目录,然后将git放到该目录下。

首先cd到git解压后的文件目录:

cd /home/senyz/Git/git-2.14.0-rc0  (我将git2.14版本的压缩包解压到了/home/senyz/Git路径下,所以是这个命令

编译安装:

make --prefix=/usr/git all doc info (/usr/git是随意指定的目录)

sudo make install install-doc install-html install-info

经过一段时间后,编译安装便完成了。此时我运行git --version发现出错,提示我git当前还未安装,最后才发现是因为自己还没有配置环境变量。需要修改bash.bashrc文件或者profile文件对shell进行相关配置,解决如下:

首先切换到系统用户 sudo -s

vim /etc/bash.bashrc

在文件最后一行添加:export PATH=$PATH:/usr/git/bin/

最后执行 source /etc/bash.bashrc

注:修改bash.bashrc文件,只是将配置应用于shell中,为每一个运行bash shell的用户执行此配置,改变profile文件的话也可以,此时改动的是系统每个用户的配置信息。改法类似,只是将export PATH=$PATH:/usr/git/bin/ 命令加入profile文件中。

注:编译安装时,安装到/usr/local可以是因为/usr/local/bin这个目录默认已经加入了PATH环境变量中,这样git会安装到/usr/local/bin这个目录,所以在shell下执行时可以找到git --version这个命令。其实安装到/usr/git或者其他目录下也是可以的,只需要手动将/usr/git/bin目录加入PATH环境变量(方法如上)。
或者直接使用命令的完全路径进行调用
/usr/git/bin/git --version(由于这个命令当shell关闭后失效,所以还是对bash.bashrc或者profile文件进行修改比较好)



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!