rpm2cpio & cpio

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命令时不要忘了输入那个">"和"<")

你可能感兴趣的:(linux,用户,File,程序)