编译安装和极速安装有什么区别
2019-04-22| 程成| 854| 0| 其他

一、什么问题


我知道编译安装比极速安装时间要长,稳定性没有极速安装稳定。但是从原理来看,两者有啥区别?什么时候用编译安装,什么时候用极速安装?这些都是值得探索的问题。


编译安装又叫源码包安装,极速安装本质是RPM包安装。所以问题就变成了源码包安装和RPM包安装的区别。



二、RPM包安装和源码安装区别


(1)安装位置不同


RPM包安装位置

image.png

源码包安装位置

一般是/usr/local/软件名/



(2)不同位置不同影响


RPM包安装的服务可以通过系统服务管理命令(service)来管理,例如RPM包安装的 apache 的启动方法是

/etc/rc.d/init.d/httpd start

service httpd start


而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如

/usr/local/apache2/bin/apachectl start



三、RPM、yum和源包介绍


1、RPM


RPM是”Redhat Package Manager”的缩写,根据名字也能猜到这是Redhat公司开发出来的。RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的Linux 主机的一套管理程序。也就是说,你的linux系统中存在着一个关于RPM的数据库,它记录了安装的包以及包与包之间依赖相关性。RPM包是预先在linux机器上编译好并打包好的文件,安装起来非常快捷。但是也有一些缺点,比如安装的环境必须与编译时的环境一致或者相当;包与包之间存在着相互依赖的情况;卸载包时需要先把依赖的包卸载掉,如果依赖的包是系统所必须的,那就不能卸载这个包,否则会造成系统崩溃。


如果你的光驱中还有系统安装盘的话,你可以通过”mount /dev/cdrom /mnt”命令把光驱挂载到/mnt目录下,那么你会在/mnt/CentOS目录下看到很多.rpm的文件,这就是RPM包了。


image.png


每一个rpm包的名称都由”-“和”.”分成了若干部分。就拿 a2ps-4.13b-57.2.el5.i386.rpm 这个包来解释一下,a2ps 为包名;4.13b则为版本信息;57.2.el5为发布版本号;i386为运行平台。其中运行平台常见的有i386, i586, i686, x86_64 ,需要你注意的是cpu目前是分32位和64位的,i386,i586和i686都为32位平台,x86_64则代表为64位的平台。另外有些rpm包并没有写具体的平台而是noarch,这代表这个rpm包没有硬件平台限制。例如alacarte-0.10.0-1.fc6.noarch.rpm 。


下面介绍一下rpm常用的命令。


1)安装一个rpm包

rpm -ivh alacarte-0.10.0-1.fc6.noarch.rpm


-i :安装的意思

-v :可视化

-h :显示安装进度


另外在安装一个rpm包时常用的附带参数有:

--force 强制安装,即使覆盖属于其他包的文件也要安装

--nodeps 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包


2)升级一个rpm包

rpm -Uvh filename -U :即升级的意思


3)卸载一个rpm包

rpm -e filename 这里的filename是通过rpm的查询功能所查询到的


4)查询一个包是否安装

rpm -q rpm包名(这里的包名,是不带有平台信息以及后缀名的)


5)得到一个rpm包的相关信息

rpm -qi 包名(同样不需要加平台信息与后缀名)


6)列出一个rpm包安装的文件

rpm -ql 包名


7)列出某一个文件属于哪个rpm包

rpm -qf 文件的绝对路径



2、 yum


介绍完rpm工具后,还需要你掌握最常用的yum工具,这个工具比rpm工具好用多了,当然前提是你使用的linux系统是支持yum的。yum最大的优势在于可以联网去下载所需要的rpm包,然后自动安装,在这个工程中如果要安装的rpm包有依赖关系,yum会帮你解决掉这些依赖关系依次安装所有rpm包。


在前面的内容中提到的yum,这个yum是Redhat所特有的安装RPM程序包的工具,使用起来相当方便。因为使用RPM安装某一个程序包有可能会因为该程序包依赖另一个程序包而无法安装。而使用yum工具就可以连同依赖的程序包一起安装。当然CentOS同样可以使用yum工具,而且在CentOS中你可以免费使用yum,但Redhat中只有当你付费后才能使用yum,默认是无法使用yum的。


下面笔者介绍常用的yum 命令。


列出所有可用的rpm包 “yum list “
搜索一个rpm包 “yum search [相关关键词]”
安装一个rpm包 “yum install [-y] [rpm包名]”
卸载一个rpm包 “yum remove [-y] [rpm包名]”
升级一个rpm包 “yum update [-y] [rpm包]”



3、源码包


其实,在linux下面安装一个源码包是最常用的,笔者在日常的管理工作中,大部分软件都是通过源码安装的。安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。如果你读得懂这些源代码,那么你就可以去修改这些源代码自定义功能,然后再去编译成你想要的。使用源码包的好处除了可以自定义修改源代码外还可以定制相关的功能,因为源码包在编译的时候是可以附加额外的选项的。


源码包的编译用到了linux系统里的编译器,常见的源码包一般都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言。Linux上的C语言编译器叫做gcc,利用它就可以把C语言变成可执行的二进制文件。所以如果你的机器上没有安装gcc就没有办法去编译源码。你可以使用 yum install -y gcc 来完成安装。


安装一个源码包,通常需要三个步骤:


(1)./config 在这一步可以定制功能,加上相应的选项即可,具有有什么选项可以通过”./config --help ”命令来查看。在这一步会自动检测你的linux系统与相关的套件是否有编译该源码包时需要的库,因为一旦缺少某个库就不能完成编译。只有检测通过后才会生成一个Makefile文件。


(2)make 使用这个命令会根据Makefile文件中预设的参数进行编译,这一步其实就是gcc在工作了。


(3)make install 安装步骤,生成相关的软件存放目录和配置文件的过程。


上面介绍的3步并不是所有的源码包软件都一样的,笔者以前也曾经遇到过,安装步骤并不是这样,也就是说源码包的安装并非具有一定的标准安装步骤。这就需要你拿到源码包解压后,然后进入到目录找相关的帮助文档,通常会以INSTALL或者README为文件名。所以,你一定要去看一下。


如果你想看具体如何通过源码包安装,请访问参考文献地址。

参考文献:https://www.cnblogs.com/zhang-jun-jie/p/9266833.html




×
作者:程成
QQ:492245711