检查和解压缩rpm包内容
其实我们经常需要检查rpm包内容,或者抽取rpm包中文件使用(不完整安装软件包),以下操作在一些内核安装等过程中经常使用,这里是作为整理汇总。
一句话
要解压缩rpm包,我们只需要工具 rpm2cpio 和 cpio :
rpm2cpio ./packagecloud-test-1.1-1.x86_64.rpm | cpio -idmvrpm
rpm包实际上是在cpio归档文件头部添加了一个结构,软件包包含4个部分:
具备先导标记(magic number)的头部,标记这个文件是一个RPM包
用于验证软件包的签名
标记软件包内容信息的头部,包含版本,版权等信息
实际的软件程序内容
使用命令检查rpm包内容:
rpm -qlp ./path/to/test.rpm如果要详细信息,则再加一个 -v 参数:
rpm -qlpv ./packagecloud-test-1.1-1.x86_64.rpm列出安装的RPM包文件,则只需要
-q和-l参数(比没有安装的rpm包少一个-p参数):
rpm -ql packagecloud-test使用rpm2cpio命令可以把软件包转为cpio格式
rpm2cpio ./packagecloud-test-1.1-1.x86_64.rpmrpm2cpio命令输出的是cpio格式包,并且直接输出到标准输出上,所以我们需要使用cpio命令来通过管道读取这个输出,然后解压并创建文件:
rpm2cpio ./packagecloud-test-1.1-1.x86_64.rpm | cpio -idmv参数解析:
-i解压缩-d如果需要则创建先导目录-m在创建文件时候修改文件的时间戳-v是详细信息,在处理过程中会显示出哪些文件处理过了
显示RPM包的preinstall和postinstalll脚本
需要注意的是,rpm包中包含了脚本,分别在安装文件前和安装文件后执行,我们需要检查这些脚本
rpm -qp --scripts ./packagecloud-test-1.1-1.x86_64.rpm如果要检查已经安装的rpm包的脚本,则去掉 -p 参数就可以:
rpm -q --scripts <packagename>显示远程仓库中rpm包内容
在 yum-utils 工具包中有一个 repoquery 可以提供查询远程仓库信息的能力。默认情况下, repoquery 会下载 yum repo metadata和update缓存。如果不想更新缓存,而是直接使用缓存信息,则加一个 -c 参数或者 --cache 参数。要列出软件包的内容,使用 --list 参数:
repoquery --list <packagename>参考
Last updated
Was this helpful?