不安装提取rpm包里的文件

2011年10月13日 发表评论 阅读评论

一、提取所有文件

用法1:
rpm2cpio  xxx.rpm > xxx.cpio
cpio -i --make-directories <  xxx.cpio
用法2:
rpm2cpio xxx.rpm | cpio -idmv
用法3:
rpm2cpio xxx.rpm | cpio --extract --make-directories

参数i和extract相同,表示提取文件;

v表示指示执行进程 ;

d 和make-directory相同,表示根据包中文件原来的路径建立目录 ;

m 表示保持文件的更新时间。

这里以atop包为例,解包所有文件的操作如下:

[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 < atop.cpio
669 blocks
[root@localhost 361way]# ll
total 504
-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
drwxr-xr-x 6 root root   4096 Feb  2 22:34 etc
drwxr-xr-x 5 root root   4096 Feb  2 22:34 usr
drwxr-xr-x 3 root root   4096 Feb  2 22:34 var

这里使用的是两步解开的方法,也可以使用方法2、3 一步解开所有文件方法。

二、解压出指定的文件

很多情况下,我们仅仅只想获取其中的某个文件,这种情况下无需解压出所有文件再提取,这里有更快捷的文件。

1、查看rpm包的所有文件

可以通过rpm命令进行查看,也可以通过rpm2cpio命令进行查看

rpm -qlp xxx.rpm
或
rpm2cpio xxx.rpm | cpio -t

rpm命令中几个参数的意思如下:

-q  --query 查询
-l  --list 列出
-f  --file 指定文件
-p --package 指定rpm包

注:这里的输出结果rpm2cpio的输出结果会以./开头,而rpm的输出结果前面没有“ .” 符号。

rpm2cpio的输出结果如下:

[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

2、解压指定的文件

这里以第一个文件为例,通过" rpm2cpio atop-2.1-1.x86_64.rpm|cpio -id ./etc/atop/45atoppm "指令就可以解压出该文件了:

[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

三、其他方法

除此之外,也可以通过mc命令解压文件,mc文件是一个终端下的窗口文件管理器。其官方站点为:http://www.midnight-commander.org/ ,默认也在redhat/centos源中有该软件 ,可以直接通过yum命令进行安装。




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

分类: Linux/unix/mac 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.