[LN_14] Linux软件安装管理(rpm|yum|源码包&
目录结构
一、软件包管理简介
1. 源码包
2. rpm包、脚本安装包
二、rpm命令管理
1. rpm包命名规则
2. rpm安装命令
1)包全名、包名-使用场景
2)rpm手工安装
3. rpm升级、卸载
1)rpm包升级
2)rpm包卸载
4. rpm包查询
1)查询是否安装rpm包
2)查询软件包的详细信息
3)查询包中文件的安装路径
4)查询某个系统文件属于归属的包
5)查询软件包的依赖性
5. rpm包校验
1)rpm包校验
2)rpm包中文件提取
三、yum在线安装
1. yum源文件
2. 光盘yum源搭建
3. yum命令
1)查询
2)安装
3)升级
4)卸载
5)yum软件组管理命令
四、源码包安装
1. 源码包与rpm包区别
2. 源码包安装过程
五、脚本安装包
一、软件包管理简介
软件包分类:
源码包;二进制包(rpm包、系统默认包)
1. 源码包
源码包-优点:
① 开源。可修改源代码
② 可自由选择所需的功能
③ 软件是通过编译安装,与操作系统匹配度高,稳定性和效率也高
④ 卸载方便。直接删除安装目录
源码包-缺点:
① 安装过程步骤相对较多,安装大型软件集合环境(如:LAMP)时容易出错,排错花费比较多精力
② 编译过程时间较长,安装过程比二进制安装时间更长
2. rpm包、脚本安装包
二进制包-优点:
① 包管理系统简单,通过相对较少的命令即可对包进行安装、升级、查询、卸载
② 安装速度比源码包安装要快很多
二进制包-缺点:
① 经过编译,不再可看到源代码
② 功能选择没有源码包灵活
③ 依赖性。安装某个软件包A,需要先安装软件包B,B又可能需要依赖C,此时需要先安装C-->B-->A
脚本安装包:
把复杂的软件包安装过程写成程序脚本,实现一键安装,实际安装的还是源码包和二进制包
优点:安装简单、快捷
缺点:失去了自定义性
二、rpm命令管理
1. rpm包命名规则
对于rpm包文件,如:httpd-2.2.15-15.el6.centos.1.i686.rpm
字符名称 | 含义 |
---|---|
httpd-2.2.15-15.el6.centos.1.i686.rpm | 软件的包全名 |
httpd | 软件的包名 |
2.2.15 | 软件的版本 |
15 | 软件的发布次数 |
el6.centos | 适合的Linux平台 |
i686 | 适合的硬件平台 |
rpm | rpm包扩展名 |
2. rpm安装命令
1)包全名、包名-使用场景
① 若操作的包是系统中没有安装过的软件包时,使用包全名(注意路径)
② 若操作的包是系统中已安装过的软件包时,则使用包名(搜索的是 /var/lib/rpm/ 中的数据库)
2)rpm手工安装
rpm -ivh 包全名
选项:
-i 安装(install)
-v 显示详细信息(verbose)
-h 显示进度(hash)
--nodeps 不检测依赖性(为保证功能正常,实际工作中安装时不建议使用此命令)
3. rpm升级、卸载
1)rpm包升级
rpm -Uvh 包全名
选项:
-U 升级(upgrade)
2)rpm包卸载
rpm -e 包名
选项:
-e 卸载(erase)
4. rpm包查询
1)查询是否安装rpm包
# 查询包是否安装
rpm -q 包名
选项:
-q 查询(query)
# 查询所有已安装的rpm包
rpm -qa
选项:
-a 所有(all)
可联合grep命令查找,如:rpm -qa | grep 包名
2)查询软件包的详细信息
rpm -qi 包名
选项:
-i 软件信息(information)
-p 未安装包信息(package)
rpm包默认安装路径(非必须):
路径 | 说明 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可值的命令安装目录 |
/usr/lib/ | 程序锁使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
3)查询包中文件的安装路径
rpm -ql 包名
选项:
-l 列表(list)
-p 未安装包信息(package)
4)查询某个系统文件属于归属的包
rpm -qf 系统文件名
选项:
-f 文件(file)
5)查询软件包的依赖性
rpm -qR 包名
选项:
-R 查询软件包的依赖性(requires)
-p 查询未安装包信息(package)
5. rpm包校验
1)rpm包校验
rpm -V 包名
选项:
-V 校验指定rpm包中的文件(verify)
校验作用:通过与官网的程序包比对,检查是否有被修改or其他差异性
验证输出结果中的8个信息含义:
S ==> 文件大小,是否改变
M ==> 文件的类型or权限(rwx)
5 ==> 文件md5校验,文件内容是否改变(完整性检验)
D ==> 设备的主从代码
L ==> 文件路径
U ==> 文件的属主(所有者)
G ==> 文件的属组
T ==> 文件的修改时间
文件类型:
c ==> 配置文件(config file)
d ==> 普通文档(documentation)
g ==> ghost文件(该文件不应该被rpm包所包含)
L ==> 授权文件(license file)
r ==> 描述文件(read me)
PS:若包文件未被修改过,则校验不会输出任何信息;若校验输出异常提示,则表示对应包文件已被修改过
2)rpm包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
命令说明:
将rpm包转换为cpio格式的命令:rpm2cpio
是一个标准工具,用于创建软件档案文件和从档案文件中提取文件:cpio
cpio 选项 < [文件|设备]
选项:
-i copy-in模式,还原(提取)
-d 还原时自动新建目录
-v 显示还原过程
三、yum在线安装
yum在线安装-优点:
将所有软件包放到官方服务器上,当进行yum在线安装时,可自动解决依赖性问题
1. yum源文件
yum源文件(配置yum源服务器的镜像信息)
vi /etc/yum.repos.d/CentOS-Base.repo
[base] ==> 容器名称,一定要放在[]中
name ==> 容器说明
mirrorlist ==> 镜像站点
baseurl ==> yum源服务器地址(可根据需要变化该地址)
enabled ==> enabled=1或不写表示容器生效;enabled=0表示不生效
gpgcheck ==> 取值为1表示rpm的数字证书生效,取值为0则不生效
gpgkey ==> 数字证书的公钥文件保存位置(不作修改)
2. 光盘yum源搭建
Step1-挂载光盘
# 建立挂载点
mkdir /mnt/cdrom
# 挂载光盘
mount /dev/cdrom /mnt/cdrom
Step2-使网络yum源失效
# 进入yum源目录
cd /etc/yum.repos.d/
# 修改yum源文件后缀名,使其失效
mv CentOS-Base.repo CentOS-Base.repo.bak
Step3-使光盘yum源生效
vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/ # 修改为实际光盘挂载地址,如:/mnt/cdrom/
# file:///media/cdrom/ # 注释掉不存在的地址
# file:///media/cdrecorder/
gpgcheck=1
enabled=0 # 修改enabled=1,使此yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
3. yum命令
1)查询
# 查询所有可用软件包列表
yum list
# 搜索服务器上所有和关键字相关的包
yum search 关键字
2)安装
yum -y install 包名
选项:
install 安装
-y 自动回答yes
安装C语言的编译器,如:yum -y install gcc
gcc安装的基础之上,可安装源码包
3)升级
yum -y update 包名
选项:
update 升级
-y 自动回答yes
备注说明:
① 若对于正式环境的服务器,升级一定要慎重,可能存在业务暂停的风险
② 正式环境服务器下,不能直接用命令yum -y update
操作,因该命令会对所有的程序包括Linux内核都进行升级,执行该命令可能引起异常
4)卸载
yum -y remove 包名
选项:
remove 卸载
-y 自动回答yes
备注说明:
① 建议在服务器中使用最小化安装,需要的程序再去安装,尽量不卸载
② 使用yum的卸载一定要慎重,操作不当如不确定是否卸载掉所有依赖,可能引起服务异常
5)yum软件组管理命令
# 列出所有可用的软件组列表
yum grouplist
# 安装指定软件组(组名可由grouplist查询出来)
yum groupinstall 软件组名
# 卸载指定软件组
yum groupremove 软件组名
安装中文语言支持:
yum groupinstall "Chinese Support"
LANG=zh_CN.utf8
rpm与yum比较:
① rpm安装时需要手工解决包的依赖性,yum可自动匹配安装依赖的包
② rpm可对本地服务器的包进行查询、校验,yum不能实现本地查询功能,只能查询在线服务器的包
四、源码包安装
1. 源码包与rpm包区别
-
安装之前:
rpm包:非开源,是经过编译的,安装速度快
源码包:是开源的,可自定义安装功能 -
安装之后:
rpm:根据包的作者的设置决定安装位置,若未设置安装位置则采用系统默认的安装位置。建议采用系统默认的安装位置,确保常规命令可使用,如:service httpd restart、/etc/rc.d/init.d/httpd start;rpm包安装的服务可以使用系统服务管理命令(service)来管理
源码包:因没有卸载命令,故需要安装在指定位置,一般为:/usr/local/软件名/;直接删除安装目录即可;源码包不能用service命令启动,因其没有安装到默认路径下,故只能用绝对路径进行服务的管理;源码包比较适用于给大量用户访问的服务程序
2. 源码包安装过程
安装源码包之前,需要先确保系统中安装有gcc
# 查询是否安装有gcc
rpm -qa | grep "gcc"
# 安装gcc
yum -y install gcc
【1】安装准备
1)安装C语言编译器gcc
2)下载所需的源码包,如Apache:http://mirror.bit.edu.cn/apache/httpd
一种方式先从浏览器下载后上传至Linux,另一种是直接在Linux中利用wget命令安装:wget -c http://archive.apache.org/dist/httpd/httpd-2.2.12.tar.gz
【2】安装注意事项
源代码保存位置:/usr/local/src/
软件安装位置:/usr/local/
安装过程报错的确认:如安装过程停止,出现error、warning、no等提示
【3】源码包安装过程
1)下载源码包:wget -c http://archive.apache.org/dist/httpd/httpd-2.2.12.tar.gz
2)解压缩下载的源码包:tar -zvxf httpd-2.2.12.tar.gz
3)进入解压缩目录:cd httpd-2.2.12
4)配置与检查,指定安装目录来安装:./configure --prefix=/usr/local/apache2
实现定义需要的功能选项;监测点系统环境是否符合安装要求;把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
5)编译(源码包==>机器语言)
编译:make
编译安装:make install
以上命令执行完成之后,即可在指定的目录下生产apache2目录,其内包含apache的安装生成的文件
6)在安装目录下启动Apache服务:/usr/local/apache2/bin/apachectl start
异常处理:
Q1. 若编译时报错而不能继续执行,可执行清除编译:make clean
,然后先安装依赖的gcc环境
Q2. 启动apache服务时,若出现异常提示"httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName",则需要编辑vi /usr/local/apache2/conf/httpd.conf
配置文件中的 ServerName www.example.com:80
,将其注释符#
取消,保存后再次启动apache,浏览器访问服务器IP地址后页面中出现 "It works!"表示服务启动ok
Q3. 过程中可能需要关闭防火墙:
- CentOS 6
# 永久性开启,重启后依然保持开启
chkconfig iptables on
# 永久性关闭,重启后依然保持关闭
chkconfig iptables off
# 即时开启防火墙,重启后复原
service iptables start
# 即时关闭防火墙,重启后复原
service iptables stop
- CentOS 7
#启动防火墙
systemctl start firewalld.service
#关闭防火墙
systemctl stop firewalld.service
#禁止防火墙开机启动
systemctl disable firewalld.service
五、脚本安装包
Nginx、Apache、Lighttpd比较:
Web服务器 | Nginx | Apache | Lighttpd |
---|---|---|---|
反向代理 | 非常好 | 好 | 一般 |
Rewrite规则 | 非常好 | 好 | 一般 |
FastCGI | 好 | 差 | 非常好 |
热部署 | 支持 | 不支持 | 不支持 |
系统压力 | 很小 | 小 | 很大 |
稳定性 | 非常好 | 好 | 一般 |
安全性 | 一般 | 好 | 一般 |
静态文件处理 | 非常好 | 一般 | 好 |
内存消耗 | 非常小 | 很大 | 非常小 |
虚拟主机 | 支持 | 支持 | 支持 |
技术资料 | 少 | 非常多 | 一般 |
Nginx服务器:
一款轻量级的Web服务器、反向代理服务器、电子邮件(IMAP/POP3)服务器,其内存消耗非常小,稳定性非常好,支持大量并发用户访问的业务场景使用,可获得明显的性能提升
案例:利用脚本安装包方式安装Nginx
centos.sh脚本分析:
一键安装包通过把安装过程写成脚本,实际安装的还是源码包与rpm包
优点:简单、快速、方便
缺点:不能定义安装软件的版本、功能,源码包的优势没有表现出来
【1】准备工作
1)关闭rpm包安装的httpd、mysqld服务
# 关闭Linux可能开启的httpd、mysqld服务项
/usr/local/apache2/bin/apachectl stop
service httpd stop
service mysqld stop
phpstudy stop
# 移除以上实验所安装的Apache安装目录
rm -rf /usr/local/apache2/
2)保证yum源可正常使用
# 查看yum是否正常使用
yum list
3)关闭SELinux(安全增强Linux)和防火墙
vim /etc/selinux/config
设置:SELINUX=disabled
【2】下载、安装
下载LNMP一键安装包的安装脚本
传送门:https://lnmp.org/download.html
下载命令:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz
下载、解压、安装:wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp
waiting。。。漫长的安装过程ing,本次大概持续1.5h安装完成
默认安装路径:/home/wwwroot/default
LNMP状态管理:lnmp {start|stop|restart|kill|status}
以上,Nginx、MySQL、PHP的checking对应都是显示OK,Nginx、MySQL、PHP的运行状态都是running,80和3306端口都存在监听,并提示安装使用的时间及"Install lnmp V1.5 completed! enjoy it.",说明已安装ok