介绍
在Linux中,安装软件有三种方式:
源码安装方法比较复杂。 软件协会将软件的所有源代码打包并压缩为 Tarball。 下载 Tarball 后,我们在笔记本电脑上编译它,然后安装它。 因为需要自己编译,所以时间会比较长游戏源码出售软件,而且依赖需要用户自己解决; 但好处是自己机器编译的肯定会更适合自己的机器,可以安装自己想要的版本。
二进制安装方式是厂家已经提前编译好了各个平台的,我们只需要下载对应平台的安装包进行安装即可。 例如游戏源码出售软件,Debian系统为.deb包,RedHat系统为.rpm包。 这种安装方式的优点是比较简单,用相应的包管理工具rpm或者dpkg即可安装; 缺点是无法解决依赖关系,版本可能比较落后。
这种安装方式虽然也是二进制安装的一种,只不过yum或者apt可以手动解决依赖关系。 其他安装与 rpm 或 dpkg 安装没有什么不同。 还有一个问题就是版本可能比较落后,尤其是yum。
现在是2021年了,yum安装的git还是1.x版本。
Distribution Faction 代表分发包管理工具 依赖管理工具
红帽部门
CentOS、红帽、Fedora
转速
嗯
Debian系统
乌班图、德班
包装袋
易于
综上所述,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
提取压缩包
解压压缩包:
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了。
踩坑
安装完成后,使用以下命令克隆我的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系