系统相关
首页 > 系统相关> > Linux如何从源代码安装软件?

Linux如何从源代码安装软件?

作者:互联网

更多文章分享在个人微信公众号:极客熊猫
欢迎扫码关注:
在这里插入图片描述

引言

在Linux中,有三种软件安装方法:

源代码安装方式相对来讲比较复杂。软件商会把软件的所有源代码打包压缩成一个Tarball,我们下载这个Tarball后,在自己的电脑上进行编译,然后安装。由于需要自行编译,所以耗时会较长,且依赖需要用户自己解决;但好处在于,自己的机器编译出来的肯定会更适合自己的机器,且可以安装自己想要的版本。

二进制安装方式就是厂商已经预先在各种平台上编译好了,我们只需要下载对应平台的安装包进行安装。比如针对Debian系的.deb包、针对RedHat系的.rpm包。这种安装方式的优点在于比较简单,用对应的包管理工具rpm或者dpkg就可以安装;缺点在于无法解决依赖,且版本可能会比较落后。

这种安装方式其实也是二进制安装的一种,只是yum或者apt可以自动解决依赖,其他的与rpm或dpkg安装并无不同,同样存在版本可能比较落后的问题,尤其是yum。

2021年了,yum安装的git居然还是1.x版本。

发行版派系代表发行版包管理工具依赖管理工具
RedHat系CentOS、RedHat、Fedorarpmyum
Debian系Ubuntu、Debiandpkgapt

综上,虽然Tarball安装是比较麻烦的一种,但是为了自由地选择软件版本,这种安装方式是我们必须掌握的。下边我们通过源代码方式安装Git,来记录Linux下通过源代码安装软件的基本流程。对其他软件也同样适用。

下载Tarball

首先去Git官网选择自己想要的Git版本的Tarball下载地址,这里选择了目前的最新版(2.31.1版本)。然后在命令行输入下列命令下载该Tarball:

wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.31.1.tar.gz

解压Tarball

将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 path

我们经常用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系

标签:git,local,Tarball,usr,Linux,软件,源代码,安装,man
来源: https://blog.csdn.net/qq_29186859/article/details/117084368