本篇博客的主要内容是: CentOS中有两种软件安装方式;【yum方式】和【编译方式】【yum方式】;本篇博客主要介绍【编译方式】。
目录
一:【编译方式】安装简介
二:【yum方式】和【编译方式】比较:
三:以安装Redis为例,演示【编译方式】安装软件的过程
1.下载Redis源代码
2.解压Redis源码的压缩包
3.编译安装Redis
(1)安装make命令对应的【底层编译器:gcc】
(2)删除【第一次使用make命令后,被污染的源代码目录】,重新获得一个源代码目录
(3)调用make命令,编译安装redis
(补.1)说明:需要注意【yum方式】和【编译方式】还有一个不同
(补.2)启动redis
4.【编译方式】安装的软件:卸载(存疑……)
(1)如果某个软件,在yum仓库中并没有提供【rpm方式安装的“安装文件”】,此时需要从软件官网下载源代码,采用【编译方式】安装了;
(2)【编译方式】:步骤
● 首先,需要从软件官网去下载源代码(当然,也可从GitHub等网站上去下载源代码);
● 然后,利用Linux自带的编译命令,对源代码进行编译,生成可执行文件;
(3)Linux自带的编译命令就是make;
(1)兼容性:
● 【yum方式】:软件开发商要为每一种Linux发行版提供对应的安装包;甚至,有些软件针对CentOS 6和CentOS 7的安装包都不通用。因此,通用性比较差;
● 【编译方式】:代码都是通用的,我们只需要对源代码进行编译,就可以获取到应用程序了;
(2)复杂度:
● 【yum方式】:“傻瓜式”自动快速完成;
● 【编译方式】:底层的依赖需要我们手动去安装,安装过程比较复杂;
(3)安装速度:
● 【yum方式】:该方式背后,只需要文件的解压和复制,比较快;
● 【编译方式】:要对每一个源代码进行编译,然后再去运行,过程较慢;
(4)来源:
● 【yum方式】:应用仓库;
● 【编译方式】:去官网下载源代码;
(5)应用场景:
● 【yum方式】:该方式提供了大多数我们日常使用的系统软件,对于这些软件,直接使用比较简单点的【yum方式】安装就好了;
● 【编译方式】:一些小众的开源软件;软件的最新版本;就需要获取源代码,通过【编译方式】安装了;(即【yum仓库】中提供的软件安装包往往都不是最新的)
Redis是一款非常著名的NoSQL数据库,在系统通常起到缓存的作用。
但这儿,我们演示安装的是redis-4版本的,都一样啦。
然后,通过ftp将Redis的源码包上传至/usr/local目录下;
……………………………………………………
……………………………………………………
切到redis解压后的目录,尝试使用make命令:
然后,其就会报错:
所以,需要先安装【底层编译器:gcc】:gcc:是C语言源代码的编译工具包;
(PS:之所以这些包都是以rpm结尾的,是不是可以这样理解:(如有错误,随时修改……)
● 这些包,本来就是软件厂商为【CentOS系统】而准备的安装包,而【CentOS系统】安装软件的命令是rpm,所以为了对应,软件厂商就把【给CentOS系统准备的安装包的扩展名】定为了“.rpm”)
● 我们这儿是通过CentOS去下载的这些安装包,而这些软件厂商给CentOS这个版本的操作系统准备的安装包的扩展名就是rpm;(然后,软件厂商为其他版本的操作系统准备的安装包,扩展名就不是rpm了)
但是,在安装好gcc后,再次调用make命令:
为此,需要将先前解压的redis安装包目录删除,然后重新解压一个:
【yum方式】:会自动在系统的/usr/bin目录下生成对应的应用程序;
【编译方式】不会在系统的/usr/bin目录下生成对应的应用程序;其只能在当前目录成生成应用程序;即【yum方式】和【编译方式】,应用程序存放的地点是不一样的。
确实,通过实测:使用yum list installed并没有找到redis:
…………………………
这是原本redis源代码目录中, src目录下的内容:
然后,这是安装redis后,src目录的内容,可以看到新增了几个可执行命令;(即与【yum方式】不同,【编译方式】只能在当前目录成生成应用程序)
使用【Ctrl+C】停掉redis,退回到Linux命令状态:
本篇博客的重点不是redis,所以这儿就不详细介绍redis了。
……………………………………………………
本部分参考自:https://zhidao.baidu.com/question/1667789691753258627.html;
卸载【使用编译方式安装的软件】,可以使用【make uninstall】命令;
但是之后部分软件有【make uninstall 之类的功能】,大多数软件是没有的;
因此可以在configure的时候加个preifx参数,比如 --preifx=/opt/squid,这样当你不用的时候直接rm -rf /opt/squid 就可以了。(讲道理,这儿不咋懂……)
本部分参考自:Linux 中make install安装的软件怎么卸载掉,【cincoutvc 】的回答;
Linux中用make install方式(编译安装)安装的软件只需要将它的安装目录删除掉就可以完成卸载了,具体删除哪个目录需要打开源码里面的Makefile文件,查看Makefile里面的install信息。比如用源码编译安装的Apache,通过查看Makefile文件得知它安装在/usr/local/apache目录,卸载它只需要删除/usr/local/apache目录就可以了:
rm -rf /usr/local/apache
本部分参考自: Linux 中make install安装的软件怎么卸载掉,【百度网友711eabb 】的回答;
Linux又没有注册表的概念,文件目录一个一个删除不就行了
所以,目前来看,通过【编译方式】安装的软件,要想卸载,直接暴力删除对应的源代码目录!(存疑……)