更多文章分享在个人微信公众号:极客熊猫
欢迎扫码关注:
在Linux中,有三种软件安装方法:
源代码安装方式相对来讲比较复杂。软件商会把软件的所有源代码打包压缩成一个Tarball,我们下载这个Tarball后,在自己的电脑上进行编译,然后安装。由于需要自行编译,所以耗时会较长,且依赖需要用户自己解决;但好处在于,自己的机器编译出来的肯定会更适合自己的机器,且可以安装自己想要的版本。
二进制安装方式就是厂商已经预先在各种平台上编译好了,我们只需要下载对应平台的安装包进行安装。比如针对Debian系的.deb
包、针对RedHat系的.rpm
包。这种安装方式的优点在于比较简单,用对应的包管理工具rpm
或者dpkg
就可以安装;缺点在于无法解决依赖,且版本可能会比较落后。
这种安装方式其实也是二进制安装的一种,只是yum或者apt可以自动解决依赖,其他的与rpm或dpkg安装并无不同,同样存在版本可能比较落后的问题,尤其是yum。
2021年了,yum安装的git居然还是1.x版本。
发行版派系 | 代表发行版 | 包管理工具 | 依赖管理工具 |
---|---|---|---|
RedHat系 | CentOS、RedHat、Fedora | rpm | yum |
Debian系 | Ubuntu、Debian | dpkg | apt |
综上,虽然Tarball安装是比较麻烦的一种,但是为了自由地选择软件版本,这种安装方式是我们必须掌握的。下边我们通过源代码方式安装Git,来记录Linux下通过源代码安装软件的基本流程。对其他软件也同样适用。
首先去Git官网选择自己想要的Git版本的Tarball下载地址,这里选择了目前的最新版(2.31.1版本)。然后在命令行输入下列命令下载该Tarball:
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.gz
将Tarball解压:
tar -zxvf git-2.31.1.tar.gz
解压后会出现文件夹git-2.31.1
,里边有很多文件,可以进去看一下。
INSTALL文件详细说明了Git的安装方法,可以读一下。
将源代码解压到/usr/local/src中也是一个好习惯。
文件夹内的configure
文件是一个脚本配置工具,用来检测本机环境并生成对应的Makefile以备后续编译安装使用。
configure
负责找到编译安装所需要的数据比如函数库、编译器、依赖项等,该程序都可以检测出来。
我们一般还用它来指定安装位置:
cd git-2.31.1 ./configure --prefix=/usr/local/git
尽量给软件一个单独的文件夹,如果只指定到/usr/local的话,安装之后git的各种文件会分散在不同的文件夹,将来删除的时候不方便;
通过指定到/usr/local/git,安装之后所有的东西都在git文件夹内,将来要卸载它,只需执行
rm -rf /usr/local/git
即可。
执行完configure
之后,就会生成针对本机的Makefile,然后就可以通过make
命令编译,make install
安装了。
make && make install
这个过程可能出现错误,一般是缺少一些依赖,找出对应的依赖,安装之后,重新执行上述安装命令即可。
这样安装之后,由于可执行程序的路径不在系统变量内,无法直接使用git,而要/usr/local/git/bin/git
这样使用,未免太过麻烦。我们可以把其路径加入到环境变量,这样就可以直接使用git了。
环境变量在/etc/profile
内添加,使用下列命令打开该文件:
vim /etc/profile
在最末尾添加以下两行:
export GIT_HOME=/usr/local/git export PATH=${GIT_HOME}/bin:${PATH}
保存修改并退出,然后执行下列命令使新的环境变量生效:
source /etc/profile
这样,就可以直接使用git
了。至此,git安装完毕。
我们经常用man
命令来查找一些使用帮助,对我们非常重要。但是现在执行man git
会提示No manual entry for git,这是因为我们安装的git不含git-manpages,所以要想用man git
,我们要:
git clone http://git.kernel.org/pub/scm/git/git-manpages.git
mkdir /usr/local/git/share/man sudo cp -r git-manpages/* /usr/local/git/share/man/
MANPATH_MAP /usr/local/git/bin /usr/local/git/share/man
退出并保存后,就可以使用man git
了。
安装完之后,使用以下命令clone我的SurgeX项目时:
git clone https://github.com/mrxuxg/SurgeX.git
出现错误:
git: 'remote-https' is not a git command. See 'git --help'.
经过查找,终于在StackOverflow上查到了解决方案,出现此错误是因为缺少了一个依赖libcurl-devel
,解决方案如下:
sudo yum install libcurl-devel //RedHat系 sudo apt install libcurl4-openssl-dev //Debian系