rpm2cpio命令:将rpm格式的文件转为cpio格式的文件。
rpm是linux中常用的文件格式,方便了用户的安装,但没有cpio格式灵活,最典型的例子就是安装一个在rpm中.so文件时,如果直接使用rpm安装,那么需要处理复杂的依赖关系,将rpm转为cpio,则可以方便地提取.so文件。
$ rpm2cpio initscripts-9.03.38-1.el6.x86_64.rpm >init.cpio
$ file init.cpio
init.cpio: ASCII cpio archive (SVR4 with no CRC)
cpio是用来建立,还原备份档的工具程序,它可以加入,解开cpio或tar备份档内的文件。
选项:
-d或--make-directories 如有需要cpio会自行建立目录。
-i或--extract 执行copy-in模式,还原备份档。表示提取文件
-m或preserve-modification-time 不去更换文件的更改时间。
-v或--verbose 详细显示指令的执行过程。
$ cpio -idmv <init.cpio
$ ls
bin etc init.cpio initscripts-9.03.38-1.el6.x86_64.rpm lib sbin usr var
$ diff etc/rc.d/rc.sysinit /etc/rc.d/rc.sysinit
$
===
使用工具rpm2cpio和cpio
提取特定文件:
先用这个命令列出xxx.rpm中的spec文件:
rpm -qlp xxx.rpm|grep spec
再用这个命令提取spec文件:
rpm2cpio xxx.rpm |cpio -ivd xxx.spec
提取所有文件:
rpm2cpio xxx.rpm | cpio -vi
rpm2cpio xxx.rpm | cpio -idmv
rpm2cpio xxx.rpm | cpio --extract --make-directories
比如要用test.rpm里的某个文件,但又不想安装test.rpm,可以这样:
新建一个目录
$ mkdir aaa
把test.rpm放入目录aaa里并进入aaa目录
$ cp path/to/test.rpm aaa/
$ cd aaa
用rpm2cpio将rpm文件转换成cpio文件
$ rpm2cpio test.rpm >test.cpio
用cpio解压cpio文件
$ cpio -i --make-directories <test.cpio
(注意:用rpm2cpio和cpio命令时不要忘了输入那个">"和"<")
转载于:https://blog.51cto.com/menglinux/1434961