RPM包校验

校验安装的软件包文件是否被修改过

语法:rpm [选项] [包名]
-V:校验指定的RPM包中的文件(verify)

  1. ## 范例
  2. rpm -qV xxxx ## 查询某个软件包中的文件是否被修改过
  3. [root@localhost /]# rpm -qV mpfr
  4. S.5....T. d /usr/share/doc/mpfr-3.1.1/README ## 该文件的文件大小和文件内容发生了改变

image.png

第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:显示还原过程

  1. ## 范例
  2. rpm -qf /bin/ls ## 先查询一下ls命令属于哪个包
  3. mv /bin/ls /tmp/ls ## 将ls命令暂时剪切到临时文件,造成系统重要文件缺失,进行修复
  4. cd / ## 回到/根目录
  5. rpm2cpio /run/media/gmd/CentOS 7 x86_64/Packages/coreutils-8.22-24.el7.x86_64.rpm | cpio -idv ./bin/ls
  6. ## 提起RPM包中的ls命令到当前目录的/bin/ls下
  7. ## 注意,这里是挂载进来了centos的iso镜像,从镜像的Packages中,找到ls的rpm包,然后提取ls命令