一.Linux下软件安装包的类型
1.源码包
- 优点
开源,如果有足够的能力,可以修改源代码,自由选择所需的功能;
软件是本地编译后安装,所以更加适合自己的系统,更加稳定、效率更高;
卸载方便,直接删除安装目录即可。 - 缺点
安装步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出错;
因为需要编译安装,所以安装过程中一旦报错新手很难解决且安装时间较长; - 脚本安装包
脚本安装包就是把复杂的软件包安装过程写成了脚本程序,通过执行脚本实现一键安装,但实际安装的还是源码包编译后的二进制包;
优点:安装简单、快捷,适合新手;
缺点:完全丧失了自定义性。
2.二进制包(RPM包)
- 优点:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
安装速度比源码包快的多(安装的是厂家已编译好的二进制包)。 - 缺点
经过编译,无法看到源代码;
功能选择不如源码包灵活;
依赖性,安装时依赖问题比较麻烦
二.rpm包的安装命令
1.安装
rpm -ivh 包全名
- -i (install) 安装
- -v (verbose) 显示详细信息
- -h (hash) 显示进度
示例:rpm -ivh httpd-2.2.15-15.e16.centos.1.i686.rpm
2.升级
rpm -Uvh 包全名(要升级到的软件版本)
3.卸载
rpm -e 包名
示例:rmp -e httpd
这个命令不同于安装和升级,它可以在任何目录运行,原理是去/var/lib/rpm目录中的数据库(如__db0)中查找对应的软件包(已经安装过的rpm包都在这些数据库中),然后卸载。
rpm安装包安装的位置是由软件包开发者决定的,安装后的位置会非常凌乱,所以最好是使用rpm -e命令卸载。
4.查询
- 查询是否安装: rpm -q 包名
- 查询所有:rpm -qa
常用的查询命令示例:rpm -qa | grep httpd
grep 后跟正则表达式 - 查询软件包详细信息:rpm -qi 包名
5.RPM 包校验
rpm -V 已安装的包名
示例:rpm -V httpd
判断本地的软件文件与官方给出的是否一致, 从而判断是否被人修改
若无任何提示, 代表该文件没有被做任何修改
三.Yum在线安装
使用前确保已安装了gcc(c语言编译器):yum -y install gcc
- 优点
所有软件包放到官方服务器上,当进行yum在线安装时,可以自动解决依赖性问题
yum的配置文件目录:/etc/yum.repos.d/
其中默认生效的是CentOS-Base.repo
文件中的mirrorlist和baseurl一个是主站点,一个是辅助站点,这两个有一个就行,可替换为国内镜像源地址
使用清华镜像源:https://mirrors.cnnic.cn/help/centos/
- 命令
yum search 关键字:搜索服务器上所有和关键字相关的包
yum -y install 包名 (-y 自动回答yes):安装
yum -y update 包名:升级,一定要加包名,否则会升级所有软件
yum -y remove 包名:卸载命令
升级是要付出代价的,有可能造成损失。所以在正式服务器上,除非出现关键的安全问题漏洞,一般不建议升级
服务器原则:使用最小化安装,用什么安装什么,尽量不要去卸载
四.源码包安装
1.由于源码都是c语言写的,所以要先安装c语言编译器:gcc;
2.从官方网站下载源码包,以apache2为例,下载解压后得到目录:httpd-2.2.31;
3.进入到解压缩后的目录【httpd-2.2.31】中;
4.执行命令:./configure --prefix=/usr/local/apache2
- configure命令:用于软件的配置与检查,生成Makefile文件,后续安装将依赖此文件;
- 参数prefix:指定安装路径
5.执行【make】命令,编译成源码
6.执行【make install】命令,安装程序,此时会创建【/usr/local/apache2】目录
若执行【./configure】或【make】命令时出现错误,是不需要删除【/usr/local/apache2】目录的,因为程序还没有真正安装。只需要执行【make clean】命令即可,该命令用于清除缓存、临时文件等,使安装环境恢复到未安装状态。
若执行【make install】命令时报错,则需要删除【/usr/local/apache2】目录,并且执行【make clean】命令。
五.Linux中源码包与RPM包区别
1.安装位置不同
源码包是不能使用【service】命令来启动服务,因为源码包的安装位置由用户指定,放在哪并不统一。而rpm包安装后,通常启动命令都放在【/etc/rc.d/init.d】目录中的,而【service】命令执行时,会自动搜索该目录,所以rpm包安装的服务可以使用【service】命令。
源码包的安装路径一般指定为: /usr/local/软件名/,源码包安装的服务,只能用绝对路径进行服务的管理。
如果将源码包安装后的启动程序复制到【/etc/rc.d/init.d】目录中,则也是可以使用【service】命令执行的。
参考:https://www.imooc.com/coursescore/447
https://blog.csdn.net/Dream_Weave/article/details/86583705