1、软件包分类:
——源码包
包括【脚本安装包】
——二进制包
包括【RPM包、系统默认包】
特点:
源码包:用c语言或者时c++语言写的内核但是安装的时候会报错的可能性大,所以用二进制包【经过编译之后的.rpm格 式 ==Windows的.exe】可以更快安装,目录在cent os的Packages文件下,脚本安装包时install.sh使用界面安装,源码包必须手动安装。
源码包优点:
1、开源,如果有足够的能力,可以修改源代码
2、可以自由的选取系统所需要的功能
3、软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
4、卸载方便,不产生垃圾文件
源码包缺点:
1、安装过程中步骤较多,尤其安装较大的软件集合时,容易出现拼写错误
2、编译过程时间较长,安装比二进制安装时间长
3、因为是编译安装,安装过程中一旦报错新手很难解决问题
二进制包优点:
1、RPM包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
2、安装速度比源码包安装快得多
二进制包缺点:
1、经过编译,不再可以看到源码
2、功能依赖不如源码包灵活
3、容易产生依赖性
2、RPM包命名原则
httpd-2.2.15-15.e16.centos.1.i686.rpm
httpd——软件包名
2.2.15——软件版本
15——软件发布的次数
e16.centos——适合的Linux平台
i686——适合的硬件平台
rpm——rpm包扩展名
注释:
在Linux系统中,只有rpm有扩展名,给管理员看的,更加清晰该文件时安装包。
Noarch代表可以在任何硬件平台上安装。
区分包名和包全名【因为有的命令只能跟包名,有的命令只能跟包全名】
3、RPM包依赖性
树形依赖:a——>b——>c
环形依赖:a——>b——>c——>a
模块依赖:模块依赖查询网站:www.rpmfind.net
注释:
树形依赖:装软件包a会跟自己要b,装b会跟自己要c,这个时候就只能先装c,再装b,再装a;
卸载的时候就要先卸载a,再卸载b,再卸载c。
环形依赖:将软件包abc用同一条命令同时装就可以
4、rpm命令管理-安装升级和卸载
包全名:操作的时没有安装的软件包时,使用包全名。而且要注意路径,用于软件包安装。
包名:操作已经安装的软件包时,使用包名。时搜索/var/lib/rpm/中的数据库,用于软件包升级和卸载。
rpm -ivh 包全名
选项:
-i(install)安装
-v (verbose)显示详细信息
-h (hash)显示进度
--nodeps 不检测依赖性
示例:安装 mysql-connector-odbc-5.1.br1144-7.e16.i686.rpm包,出现的error是包的依赖性,
So.2表示的是库依赖的包 不是单独存在的,在一个rpm包里边的子文件,那么需要把这个rpm包先进行安装,这个rpm包的查找方法是在 www.rpmfind.net中搜索这个包名,此为模块依赖。
5、rpm命令管理-RPM包升级
rpm -Uvh 包全名
选项:
-U (upgrade) 升级
6、rpm命令管理-RPM包卸载
rpm -e 包名
选项:
-e (erase)卸载
--nodeps 不检查依赖性
7、rpm命令管理-查询
1、查询是否安装
【root@localhost~】#rpm -q 包名
#查询包是否安装
选项:
-q (query)查询
【root@localhost~】#rpm -qa
选项:
-a (all)所有
2、查询软件包详细信息
【root@localhost~】#rpm -qi 包名
选项:
-i 查询软件信息(information)
-p 查询未安装包信息(package)
3、查询包中文件安装位置
【root@localhost~】#rpm -ql 包名
选项:
-l 列表(list)
-p 查询未安装包信息(package)
4、查询系统文件属于那个RPM包
【root@localhost~】#rpm -qf 系统文件名
选项:
-f 查询系统文件属于那个软件包(file)
示例:
5、查询包的依赖性
【root@localhost~】#rpm -qR 包名
选项:
-R 查询软件包的依赖性(requires)
-p 查询未安装包信息(package)
示例:
8、rpm命令管理-校验和文件提取
1、rpm包校验
【root@localhost~】#rpm -V 已安装包名
选项:
-V 校验指定RPM包中的文件(verify)
------------以校验的方式查看系统中的文件是否被人修改
验证内容中的8个信息的具体内容如下:
S —— 文件的大小是否被改变
M —— 文件的类型或文件的权限(rwx)是否被改变
5 —— 文件的MD5加密校验和是否改变(可以看成文件内容是否改变)
D —— 设备的中,从代码是否改变
L —— 文件路径是否改变
U —— 文件的属主(所有者)是否改变
G —— 文件的属组是否改变
T —— 文件的修改时间是否改变
文件类型
c —— 配置文件(config file)
d —— 普通文档(documentation)
g ——"鬼"文件(ghost file)很少见,就是该文件不应该被这个RPM包所包含
l —— 授权文件(license file)
r —— 描述文件 (read me)
2、RPM包中文件提取
【root@localhost~】# rpm2cpio 包全名 |\
cpio -idv .文件绝对路径
rpm2cpio
#将rpm包转换为cpio格式的指令
cpio
#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
注释:误删操作后从rpm包中提取进行安装覆盖
【root@localhost~】#cpio 选项 <【文件|设备】
选项:
-i:copy-in 模式,还原
-d: 还原时自动新建目录
-v:显示还原过程
【root@localhost~】#rpm -qf /bin/ls
#查询ls命令属于哪一个软件包
【root@localhost~】#mv /bin/ls/tmp/
#造成ls命令误删假象
【root@localhost~】#rpm2cpio /mnt/cdrom/Packages/croertils-8.4-19.e16.i686.rpm | cpio -idv ./bin/ls
#提取RPM包中ls命令到当前目录的/bin/ls下
【root@localhost~】#cp/root/bin/ls /bin/
#把ls命令复制到/bin/目录下,修复文件丢失