软件包分类:
原始人(源代码安装包):压缩包(源代码包)
特点:开源,自由选择功能,编译安装更合适更稳定,卸载方便
缺点:步骤长,时间长,报错难以解决
二进制包(RPM包,系统默认包):
优点:简单通过命令进行安装,升级,查询和卸载,安装速度也更快
缺点:源码不可见,功能自由度不高,依赖性强
脚本安装包:一键执行,缺乏自由度,通过脚本自动安装源码包或二进制包
RPM包(安装位置可指定,通常不指定,方便卸载,与相应指令调用)
在系统光盘中的Packages目录下有(光盘中有所有的rpm包).
默认安装位置
默认安装位置 | 描述 |
/etc/ | 配置文件目录 |
/usr/bin/ | 可执行命令目录 |
/usr/lib/ | 程序使用函数库保存位置 |
/usr/share/doc/ | 基本使用手册位置 |
/usr/share/man | 帮助文档位置 |
(1)rpm包命名规则:httpd-2.2.15-15.el6.centos.1.i686.rpm(包全名)
httpd:软件包名(包名)
2.2.15:软件版本
15:发布次数
el6.centos:适合Linux平台
i686:适合的硬件平台
rpm:后缀名(扩展名)rpm
PS:操作没有安装的软件包时使用包全名且注意路径,
操作已安装的软件包时,使用包名,搜索/var/lib/rpm/中的数据库(虽然暂时无法理解)
(2)依赖性:
树形依赖:a->b->c:先装c再b再a
环形依赖:a->b->c->a,需要将a,b,c放在一条命令中安装
模块依赖:查询网站:www.rpmfind.net (被依赖的模块以.so.数字结尾
)模块只是一个文件,并非软件包,存在于软件包中,所以需要装的是包含这个模块的rpm
解决:1.上查询网站:www.rpmfind.net 将需要的模块名进行搜索,查找其所在的rpm包 2.肉眼观测,看模块像哪个安装包(这么坑的东西当初是如何设计的呢,唉)
命令:
1.rpm(命令管理)(绝对的反人类指令能不用就不用,但是学习还是必须的,反人类也只是在安装和卸载的时候)
安装:
rpm -ivh 包全名
- -i(install)安装
- -v(verbose)啰嗦,就是显示详细信息
- -h(hash)显示进度(hash和进度有什么关系呢??)
- –nodeps 不检测依赖性(基本不用,可是用了后再补全依赖可以吗?到时候去测试看看)(应该可以)
- –prefix=<+dir> 指定安装目录
升级:
rpm -Uvh 包全名
- -U(upgrade)升级
卸载:
rpm -e 包名
- -e(erase)抹去也就是卸载
- –nodeps卸载都要检查依赖性(如同栈一般,先装后卸)
查询:
rpm -q 包名(查询包是否安装)
rpm -qa (查询所有已安装RPM包)
rpm -qi 包名(查询软件包信息) -qip 包全名(查询未安装软件包信息)
rpm -ql 包名(查询软件包安装位置) -qlp 包全名(查询软件包将安装的位置 )
rpm -qf 系统文件名(查询系统文件属于哪个安装包)(通过rpm安装的才能查到)
rpm -qR 包名(查询软件包所依赖) -qRp 包全名(查询未安装软件包所有依赖 )<定义:然并卵的一条指令,实际基本直接用安装命令看报错>
- -q (query) 询问也就是查询
- -a(all) 所有
- -i(information)查询软件信息
- -p(package) 查询未安装包信息
- -l(list)列表
- -f (file) 查询系统文件属于哪个安装包
- -R (requires)查询软件包依赖性
校验:
rpm -V 已安装包名
- -V 校验指定RPM包中的文件(verify)
不同点
出问题的文件类型
文件提取(暂时用不上,不详细解释,用途:比如ls命令误删,可从对应的rpm包中提取)
rpm2cpio 包全名 | cpio -idv.文件绝对路径
- rpm2cpio 将rpm转化为cpio格式
- cpio 一个标准工具,用于创建软件档案文档和从档案文件中提取文件
演示流程
错误修正:
1.rpm系统出问题无法安装和查询,考虑数据库出问题
使用以下指令初始化数据库:
rpm –initdb
rpm –rebuilddb 注:这个要花好长时间;
2.yum(在线管理)(centos的这个服务免费,redhat的收费)
自动匹配依赖性,打包所有依赖但是缺少RPM包查询校验
yum源文件 (/etc/yum.repos.d/)
第一个默认生效
容器名称可改
mirrorlist和baseurl只要一个就行,另一个可注释,mirrorlist也可替换为国内镜像源
enabled默认为1生效
无网络使用yum(用光盘搭建yum源)
1.挂载光盘
2.禁用Base源,修改后缀名使其失效
mv CentOS-Base.repo CentOS-Base.repo.bak
3.使得光盘yum源生效(修改CentOS-Media.repo)
原本:
修改后:
命令:
yum list (显示所有可用软件包列表)
yum search 关键字 (搜索和关键字相关的包)
yum -y install 包名 (安装)
yum -y update 包名 (升级,服务器追求稳定基本不升级,但是如果是危害巨大的漏洞就另当别论了)(不加包名为全部升级包括内核,所以与服务器的连接肯定会断开,然后升内核时SSH也应该连不上,然后又要设置点东西,最终服务器就卡在设置那一步了)
yum -y remove 包名 (卸载指令)
- install 安装
- remove 卸载
- -y 自动yes
组管理命令
yum grouplist (列出可用软件组列表)
yum groupinstall 软件组名 (安装指定软件组)
yum groupremove 软件组名 (卸载指定软件组)
PS:建议:服务器使用最小化安装,用什么装什么,尽量不卸载
源码包
1.安装C编译器(安装gcc编译器)
2.下载源码包(压缩包)
源代码一般保存在:/usr/local/src
安装位置:/usr/local
3.解压:tar -zxvf …
4.进入解压后目录
5. ./configure (软件配置与检查)
定义需要的功能选项
检测系统环境是否符合
将选项与环境信息写入makefile用于后续编辑
./configure –help 查看选项
例子:
./configure –prefix=/usr/local/apache2(指定安装目录)
5. make (编译)
报错:make clean (清除编译后的缓存文件)
make install (编译安装)
6.要卸载直接删除安装目录即可
PS: 源码包中应该有安装说明文件比如:INSTALL
脚本安装
优点:简单粗暴
缺点:不能定义版本,功能简而言之,毫无自由度可言或低
例子:安装Nginx(一台顶3台Apache)
前提:0关闭httpd和mysql;保证yum源正常使用,关闭SELinux(增强安全)和防火墙
关闭SELinux:
vim /etc/selinux/config
改成这样:
后保存重启
1.下载脚本(LNMP)(分脚本包和完整包(包括所需安装包))
2.解压,进入,./centos.sh