ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2021-05-20 17:29:48  阅读:199  来源: 互联网

标签:git local Tarball usr Linux 软件 源代码 安装 man


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

引言

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

  • 源代码安装(Tarball)

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

  • 二进制安装

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

  • yum或apt安装

这种安装方式其实也是二进制安装的一种,只是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-manpages:
git clone http://git.kernel.org/pub/scm/git/git-manpages.git
  • 然后把下载下来的manpages移动到git的安装目录的share文件夹内:
mkdir /usr/local/git/share/man
sudo cp -r git-manpages/* /usr/local/git/share/man/
  • 在man_db.conf中添加一行,在40~50行附近添加下行:
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,解决方案如下:

  • 安装libcurl;
sudo yum install libcurl-devel //RedHat系
sudo apt install libcurl4-openssl-dev //Debian系
  • 重新执行安装Git:重新configure、重新make、重新make install。

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有