一、rpm介绍
linux服务器中所有的软件包安装方式有两种,一种是源码安装、另一种是二进制包安装(rpm)源码包安装的好处是适合不同的发行版本的linux,缺点是在编译过程中花费的时间很长,二进制包安装的特点是安装速度快,但缺点是32位的服务器不能安装64位服务器的安装包等。
二、rpm包包命名及依赖
1、命名规则
openssh-clients-6.6.1p1-.el7.x86_64.rpm
openssh-clients 包名
6.6.1p1 版本号
31 发行次数
el7 适合的linux平台
x86_64 适合的硬件平台
rpm rpm包扩展名
如下图所示几乎都遵循了这个命名规则
2、rpm包依赖
树形依赖:a-b-c 安装时先安装c-b-a 卸载时先卸载a-b-c
环形依赖:a-b-c-a
模块依赖: 模块依赖查询网址http://rpmfind.net
三 rpm包命令
查询rpm包
rpm -q httpd
rpm -qa 查询所有安装的rpm包 (-q 是查询 -a是查询所有)
查询包信息
rpm -qi httpd
查询rpm包的安装位置
rpm -ql httpd
查询系统文件属于哪个rpm包(注意文件名必须是通过rpm包生成的,自己新建的无效)
rpm -qf 文件名
查询rpm包所有的依赖关系
rpm -qR httpd
查询没有安装的rpm包的依赖关系
rpm -qRp 包全名
四、rpm包校验
该功能可以查询rpm包是否被别人进行过修改,如果查询没有任何信息输出证明是是官方最原始的安装信息
rpm -V 包名
rpm -V httpd
rpm包的验证内容中的信息内容如下:
S 文件大小是否改变
M 文件的类型或权限是否改变
5 文件的MD5效验和是否改变(可以看成文件内容是否改变)
D 设备中的代码是否改变
L 文件路径是否改变
U 文件属主是否改变
G 文件属组是否改变
T 文件的修改时间是否改变
文件类型
c 配置文件
d 普通文件
g 鬼文件(该文件不应该在rpm包中出现)
l 授权文件
r 描述文件
五、rpm包中文件提取
该功能是在文件误删除或误修改后,不需要对软件重新安装只需要从rpm包中重新提取覆盖即可
例如我把/bin/ls 下的文件删除了,导致我们的ls不可用这种情况我们不需重新安装只需要知道ls是属于哪个rpm包并还原即可
演示如下:
1、先找到ls 是属于哪个rpm包
rpm -qf /bin/ls
2、/bin/ls的文件移动到/tmp (模拟ls文件被删除或损坏)
mv /bin/ls /tmp/
3、提取
rpm2cpio /mnt/coreutils-8.4-46.el6.i686 | cpip -idv ./bin/ls
4、把ls命令复制到/bin目录下修复损坏的文件
cp /root/bin/ls /bin/