[linux学习笔记] 软件包管理和RPM命令管理




一、软件包管理

1、软件包分类

源码包>脚本安装包

二进制包(RPM包、系统默认包)

2、源码包

优点:开源,可修改源代码;可自由选择所需的功能;软件是编译安装,更适合自己的系统,更稳定,效率更高;卸载方便;

缺点:安装步骤多,尤其是较大软件集合,如LAMP环境,容易出现拼写错误;编译时间过长;编译安装过程中报错新手很难解决问题;

3、RPM包

二进制包的优点:包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;安装速度比源代码包安装快的多;

二进制包的缺点:不可能看到源代码;功能选择不如源码包灵活;软件包的依赖性;

 

二、RPM包管理和RPM命令管理

1、RPM包命名规则

httpd-2.2.15-15.el6.centos.1.i686.rpm

httpd:软件包名;

2.2.15:软件版本;

15:软件发布的次数;

el6.centos:适合的Linux平台;

i686:适合的硬件平台;

rpm:rpm包扩展名;

2、RPM包依赖性

树形依赖:a->b->c;

环形依赖:a->b->c->a;

模块依赖:模块依赖查询网站www.rpmfind.net;

3、包全名与包名

包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径;

包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库;

4、RPM安装

rpm -ivh包全名

选项:-i(install)安装;-v(verbose)显示详细信息;-h(hash)显示进度;--nodeps不监测依赖性;

5、RPM包升级

rpm -Uvh 包全名

6、RPM卸载

rpm -e 包名:-e(erase)卸载;--nodeps 不监测依赖性;

7、查询是否安装

rpm -q 包名:-q 查询(query); -qa 查询所有已经安装的RPM包;

8、查询软件包详细信息

rpm -qi包名:-i 查询软件信息(information); -p 查询未安装包信息(package);

9、查询包中文件安装位置

rpm -ql 包名:-l 列表(list); -p查询未安装包信息(package);

10、查询系统文件属于哪个RPM包

rpm -qf 系统文件名:-f查询系统文件属于哪个软件包(file);

11、查询软件包的依赖性

rpm -qR 包名:-R 查询软件包的依赖性(requires); -p 查询未安装包信息(package);

12、RPM包校验

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);

13、RPM包中文件提取

rpm2cpio 包全名 | cpio -idv .文件绝对路径

rpm2cpio:将rpm包转换为cpio格式的命令;

cpio:是一个标准工具,它用于穿件软件档案文件和从档案文件中提取文件;

cpio 选项 < [文件|设备]:-i,copy-in模式,还原; -d,还原时自动新建目录;-v,显示还原过程;

举例:如误删ls命令,可以使用rpm2cpio /mnt/cdrom/Packages/coreutils-8.22-15.el7.x86-64.rpm | cpio -idv ./bin/ls  提取RPM包中的ls命令到当前目录的/bin/ls下,然后在用cp /root/bin/ls /bin/ 把ls命令复制回/bin/目录下, 修复文件丢失

 

标签: linux