一、提取所有文件

<pre class="prettyprint linenums lang-bsh">用法1:
rpm2cpio  xxx.rpm > xxx.cpio
cpio -i --make-directories 
<code><br />
</code>
<p style="text-indent:2em;">
    参数i和extract相同,表示提取文件;
</p>
<p style="text-indent:2em;">
    v表示指示执行进程 ;
</p>
<p style="text-indent:2em;">
    d 和make-directory相同,表示根据包中文件原来的路径建立目录 ;
</p>
<p style="text-indent:2em;">
    m 表示保持文件的更新时间。
</p>
<p style="text-indent:2em;">
    这里以atop包为例,解包所有文件的操作如下:
</p>
<p style="text-indent:2em;">
    
</p>
<p style="text-indent:2em;">
    
</p>
<pre class="prettyprint linenums lang-bsh">[root@localhost 361way]# ls
atop-2.1-1.x86_64.rpm
[root@localhost 361way]# ll
total 156
-rw-r--r-- 1 root root 156613 Feb  2 22:34 atop-2.1-1.x86_64.rpm
[root@localhost 361way]# rpm2cpio atop-2.1-1.x86_64.rpm > atop.cpio
[root@localhost 361way]# ll
total 492
-rw-r--r-- 1 root root 156613 Feb  2 22:34 atop-2.1-1.x86_64.rpm
-rw-r--r-- 1 root root 342424 Feb  2 22:34 atop.cpio
[root@localhost 361way]# cpio -i --make-directories 
<code><br />
</code>
<p style="text-indent:2em;">
    这里使用的是两步解开的方法,也可以使用方法2、3 一步解开所有文件方法。
</p>
<h3 style="text-indent:2em;">
    二、解压出指定的文件<br></br>
</h3>
<p style="text-indent:2em;">
    很多情况下,我们仅仅只想获取其中的某个文件,这种情况下无需解压出所有文件再提取,这里有更快捷的文件。
</p>
<h4 style="text-indent:2em;">
    1、查看rpm包的所有文件<br></br>
</h4>
<p style="text-indent:2em;">
    可以通过rpm命令进行查看,也可以通过rpm2cpio命令进行查看
</p>
<p style="text-indent:2em;">
    
</p>
<pre class="prettyprint linenums lang-bsh">rpm -qlp xxx.rpm
或
rpm2cpio xxx.rpm | cpio -t
<code><br />
</code>
<p style="text-indent:2em;">
    rpm命令中几个参数的意思如下:
</p>
<p style="text-indent:2em;">
    
</p>
<pre class="prettyprint linenums">-q  --query 查询
-l  --list 列出
-f  --file 指定文件
-p --package 指定rpm包
<code><br />
</code>
<p style="text-indent:2em;">
    注:这里的输出结果rpm2cpio的输出结果会以./开头,而rpm的输出结果前面没有“ .” 符号。
</p>
<p style="text-indent:2em;">
    rpm2cpio的输出结果如下:
</p>
<p style="text-indent:2em;">
    
</p>
<p style="text-indent:2em;">
    
</p>
<pre class="prettyprint linenums lang-bsh">[root@localhost 361way]# rpm2cpio atop-2.1-1.x86_64.rpm |cpio -t
./etc/atop/45atoppm
./etc/atop/atop.daily
./etc/cron.d/atop
./etc/init.d/atop
./etc/init.d/atopacct
./etc/logrotate.d/psaccs_atop
./etc/logrotate.d/psaccu_atop
./usr/bin/atop
./usr/bin/atopsar
./usr/sbin/atopacctd
./usr/share/doc/packages/atop
./usr/share/doc/packages/atop/AUTHOR
./usr/share/doc/packages/atop/COPYING
./usr/share/doc/packages/atop/ChangeLog
./usr/share/doc/packages/atop/README
./usr/share/man/man1/atop.1.gz
./usr/share/man/man1/atopsar.1.gz
./usr/share/man/man5/atoprc.5.gz
./usr/share/man/man8/atopacctd.8.gz
./var/log/atop
669 blocks
<code><br />
</code>
<h4 style="text-indent:2em;">
    2、解压指定的文件<br></br>
</h4>
<p style="text-indent:2em;">
    这里以第一个文件为例,通过" rpm2cpio atop-2.1-1.x86_64.rpm|cpio -id ./etc/atop/45atoppm "指令就可以解压出该文件了:
</p>
<p style="text-indent:2em;">
    
</p>
<p style="text-indent:2em;">
    
</p>
<pre class="prettyprint linenums lang-bsh">[root@localhost 361way]# ll
total 156
-rw-r--r-- 1 root root 156613 Feb  2 22:36 atop-2.1-1.x86_64.rpm
[root@localhost 361way]# rpm2cpio atop-2.1-1.x86_64.rpm|cpio -id ./etc/atop/45atoppm
669 blocks
[root@localhost 361way]# ll
total 160
-rw-r--r-- 1 root root 156613 Feb  2 22:36 atop-2.1-1.x86_64.rpm
drwxr-xr-x 3 root root   4096 Feb  2 23:39 etc
[root@localhost 361way]# ls etc/atop/45atoppm
etc/atop/45atoppm
<code><br />
</code>
<h3 style="text-indent:2em;">
    三、其他方法<br></br>
</h3>
<p style="text-indent:2em;">
    除此之外,也可以通过mc命令解压文件,mc文件是一个终端下的窗口文件管理器。其官方站点为:<a href="http://www.midnight-commander.org/" rel="noopener" target="_blank">http://www.midnight-commander.org/</a> ,默认也在redhat/centos源中有该软件 ,可以直接通过yum命令进行安装。
</p>
<p style="text-indent:2em;">
    </p>