RPM包校验
校验安装的软件包文件是否被修改过
语法:rpm [选项] [包名]
-V:校验指定的RPM包中的文件(verify)
## 范例
rpm -qV xxxx ## 查询某个软件包中的文件是否被修改过
[root@localhost /]# rpm -qV mpfr
S.5....T. d /usr/share/doc/mpfr-3.1.1/README ## 该文件的文件大小和文件内容发生了改变
第1部分:验证内容,一共9个字符,最后一个“.”可以忽略。剩下8个字符对应8个具体内容,对应的具体内容被修改过则替换成其对应的字符,未被修改则用“.”。对应具体内容如下: 1、S 文件大小是否改变 2、M 文件类型 或 文件权限是否被改变 3、5 文件的MD5校验值(文件内容)是否改变 4、D 设备中,从代码是否改变 5、L 文件的路径是否改变 6、U 文件的所有者是否改变 7、G 文件的所属组是否改变 8、T 文件的修改时间是否改变 第2部分:文件类型 1、c 配置文件(config file) 2、d 普通文件(documentation) 3、g “鬼”文件(ghost file),表示该文件不应该被该rpm包所包含 4、l 授权文件(license file) 5、r 描述文件(read me) 第3部分:被修改过的文件的文件名
RPM包中文件提取
使用场景:误删了安装好的包中的某些重要文件,需要根据rpm包做修复
提取命令说明rpm2cpio [包全名] | cpio -idv . 文件绝对路径
rpm2cpio:将rpm包转换为cpio格式的命令,2即是 to 的意思 cpio:标准工具,用于创建软件文档文件和从文档文件中提取文件
cpio 命令说明
功能描述:cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。
语法:cpio [选项] [文件或设备名]
-i:copy-in 模式,还原
-d:还原是自动新建目录
-v:显示还原过程
## 范例
rpm -qf /bin/ls ## 先查询一下ls命令属于哪个包
mv /bin/ls /tmp/ls ## 将ls命令暂时剪切到临时文件,造成系统重要文件缺失,进行修复
cd / ## 回到/根目录
rpm2cpio /run/media/gmd/CentOS 7 x86_64/Packages/coreutils-8.22-24.el7.x86_64.rpm | cpio -idv ./bin/ls
## 提起RPM包中的ls命令到当前目录的/bin/ls下
## 注意,这里是挂载进来了centos的iso镜像,从镜像的Packages中,找到ls的rpm包,然后提取ls命令