≡菜单

如何从rpm,deb,depot和msi软件包中查看和提取文件

题: 如何查看或提取捆绑在各种操作系统软件包中的文件。例如,我想知道如何查看(和提取) rpm,deb,depot或msi文件.

回答: 您可以使用类似的工具 rpm,rpm2cpio,ar,dpkg,tar,swlist,swcopy,lessmsi 如下所述。

1. Redhat / CentOS / Fedora中的RPM软件包

使用rpm -qlp列出RPM软件包中的文件

RPM代表Red Hat软件包管理器。以下示例显示了如何在不解压缩或安装rpm软件包的情况下查看RPM软件包中可用的文件。

$ 转数-qlp ovpc-2.1.10.rpm
/usr/src/ovpc/-5.10.0
/usr/src/ovpc/ovpc-2.1.10/examples
/usr/src/ovpc/ovpc-2.1.10/examples/bin
/usr/src/ovpc/ovpc-2.1.10/examples/lib
/usr/src/ovpc/ovpc-2.1.10/examples/test
.
.
.
/usr/src/ovpc/ovpc-2.1.10/pcs

命令说明:rpm -qlp ovpc-2.1.10.rpm

  • 转数— command
  • q — query the 转数file
  • l —列出软件包中的文件
  • p —指定软件包名称

使用rpm2cpio和cpio从RPM软件包中提取文件

RPM是一种cpio存档。首先,使用rpm2cpio命令将rpm转换为cpio存档。接下来,使用cpio命令从存档中提取文件,如下所示。

$ rpm2cpio ovpc-2.1.10.rpm | cpio  -idmv
./usr/src/ovpc/-5.10.0
./usr/src/ovpc/ovpc-2.1.10/examples
./usr/src/ovpc/ovpc-2.1.10/examples/bin
./usr/src/ovpc/ovpc-2.1.10/examples/lib
./usr/src/ovpc/ovpc-2.1.10/examples/test
.
.
.
./usr/src/ovpc/ovpc-2.1.10/pcs

$ ls .
usr

2. Debian中的Deb软件包

deb是Debian软件包格式的扩展。 * .deb也用于基于Debian的其他发行版中。 (例如:Ubuntu使用* .deb)

使用dpkg -c列出来自debian软件包的文件

dpkg是debian的软件包管理器。因此,使用dpkg命令,您可以列出并提取软件包,如下所示。

要查看* .deb文件的内容:

$ dpkg -c ovpc_1.06.94-3_i386.deb
dr-xr-xr-x root/root         0 2010-02-25 10:54 ./                                                                                          
dr-xr-xr-x root/root         0 2010-02-25 10:54 ./ovpc/                                                                                    
dr-xr-xr-x root/root         0 2010-02-25 10:54 ./ovpc/pkg/                                                                            
dr-xr-xr-x root/root         0 2010-02-25 10:54 ./ovpc/pkg/lib/                                                                 
dr-xr-xr-x root/root         0 2010-02-25 10:48 ./ovpc/pkg/lib/header/                                                      
-r-xr-xr-x root/root       130 2009-10-29 17:06 ./ovpc/pkg/lib/header/libov.so                                   
.
.
.

-r-xr-xr-x root/root       131 2009-10-29 17:06 ./ovpc/pkg/etc/conf                                   
dr-xr-xr-x root/root         0 2010-02-25 10:54 ./ovpc/pkg/etc/conf/log.conf   

使用dpkg -x从debian软件包中提取文件

如下所示,使用dpkg -x从deb软件包中提取文件。

$ dpkg -x  ovpc_1.06.94-3_i386.deb /tmp/ov
$ ls /tmp/ov
ovpc

DEB文件是ar存档,始终包含三个文件—debian-binary,control.tar.gz和data.tar.gz。我们可以使用ar命令和tar命令从deb包中提取并查看文件,如下所示。

首先,使用ar命令提取* .deb存档文件的内容。

$ ar -vx ovpc_1.06.94-3_i386.deb
x - debian-binary
x - control.tar.gz
x - data.tar.gz
$

接下来,提取data.tar.gz文件的内容,如下所示。

$ tar -xvzf data.tar.gz 
./                                                                             
./ovpc/                                                                         
./ovpc/pkg/                                                                     
./ovpc/pkg/lib/                                                             
./ovpc/pkg/lib/header/                                                      
./ovpc/pkg/lib/header/libov.so                                   
.
.
./ovpc/pkg/etc/conf                                   
./ovpc/pkg/etc/conf/log.con

3. HP-UX中的软件仓库包

使用tar和swlist列出软件仓库包中的文件

DEPOT文件是HP-UX软件发行商目录库文件。 HP-UX软件仓库只是一个tar文件,还有一些其他信息,如下所示。

$ tar -tf ovcsw_3672.depot
OcswServer/MGR/etc/
OcswServer/MGR/etc/opt/
OcswServer/MGR/etc/opt/OV/
OcswServer/MGR/etc/opt/OV/share/
OcswServer/MGR/etc/opt/OV/share/conf/
OcswServer/MGR/etc/opt/OV/share/conf/OpC/
OcswServer/MGR/etc/opt/OV/share/conf/OpC/opcctrlovw/

swlist是HP-UX命令,用于显示有关软件的信息。使用swlist命令查看仓库软件包的内容,如下所示。

$ swlist -l file -s /root/ovcsw_3672.depot
# Initializing...
# 联系ing target "osgsw"...
#
# Target:  osgsw:/root/ovcsw_3672.depot
#

# OcswServer			8.50.000       Ocsw  Server product
# OcswServer.MGR     		9.00.140       Ocs Server Ovw
  /etc
  /etc/opt
  /etc/opt/OV
  /etc/opt/OV/share
  /etc/opt/OV/share/conf
  /etc/opt/OV/share/conf/OpC

使用swcopy从软件仓库包中提取文件

Swcopy命令将软件选择从软件源复制或合并到一个或多个软件仓库target_selections。使用swcopy中的uncompress选项,您可以从软件仓库软件包中提取文件。

$ swcopy -x uncompress_files=true -x enforce_dependencies=false -s /root/ovcsw_3672.depot \* @ /root/extracted/
$ ls /root/extracted
MGR	catalog	 osmsw.log
$

由于软件仓库文件为tar文件,因此您可以使用普通的tar提取程序进行提取,如下所示。

$ tar -xvf filename

4. Windows中的MSI

Microsoft安装程序是用于在Windows系统上安装,维护和删除软件的引擎。

使用lessmsi列出MSI软件包中的文件

该实用程序称为 lessmsi.exe 用于查看msi软件包中的文件而无需安装。相同的实用程序也用于提取msi程序包。选择要查看内容的MSI。 lessmsi将列出msi中可用的文件。

使用msiexec从MSI包中提取文件

Windows Installer工具(Msiexec.exe)用于从MSI程序包中提取文件。它可以在中打开MSI程序包“Administrator”安装模式,可以在不执行安装的情况下提取文件,如下所示。

C:\>msiexec /a ovcsw_3672.msi /qb TARGETDIR="C:\ovcsw"

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 9 评论… 加一 }

  • pu 2010年4月19日,上午2:37

    不错的总结,谢谢。当我想查看rpm的内容时,通常使用Midnight Commander(mc)。它知道如何打开rpm文件。它们看起来像目录,mc不仅可以浏览cpio存档,还可以浏览安装前/安装后脚本,变更日志等。

  • 德西迪亚 2010年4月19日,上午2:46

    你好,

    好的编译。也许对您有用’重新在您没有的系统上’没有最喜欢的工具,但是恕我直言,访问这些内容的最简单方法是Midnight Commander(至少对于rpm’s, deb’s and tgz).

    问候,

  • 加内什·艾耶(Ganesh Iyer) 2010年4月19日,晚上10:53

    您可以使用7zip解压缩MSI程序包。

  • 杰弗里 2010年4月21日,上午2:49

    有没有一种方法只能从RPM中提取特定文件? (在Red Hat Linux上)
    我还没有找到解决方法。
    rpm2cpio | cpio -idmv
    实际上会从RPM中提取所有文件,并将其放置在当前工作目录中。

  • 萨西卡拉 2010年4月22日,上午1:15

    @Jeffrey,
    要从rpm提取单个文件,

    rpm2cpio rpmname | cpio -ivd ./RPM中文件的绝对路径

    例:
    RPM是/tmp/set-ex-5.10.0-1.i486.rpm,其中包含一个名为/usr/src/examples/set-5.10.0/ex/newconfig.set的文件

    现在转到/ tmp目录并执行以下命令,

    rpm2cpio set-ex-5.10.0-1.i486.rpm | cpio -ivd ./usr/src/examples/set-5.10.0/ex/newconfig.set

    文件newconfig.set可在/tmp/usr/src/examples/set-5.10.0/ex/newconfig.set中找到。

  • 卡塔林 2010年4月27日,上午5:28

    rpm和deb软件包之间的区别是什么?
    如果我已经制作了软件,我该如何制作deb和rpm软件包?

  • 达贡 2011年7月1日,上午7:32

    好文章谢谢。我搜索了dpkg -x。

  • 瑞鲁 2011年12月20日,上午1:05

    在Windows上, 逆戟鲸 允许浏览/编辑MSI软件包,因此它不仅仅是提取文件的一种方法。

    逆戟鲸是Windows SDK的一部分。

  • 菲特里安托·哈利姆(Fitrianto Halim) 2016年4月29日,上午10:49

    不错的文章。
    I’在Android上安装了kbox。
    在dpkg上,我可以’看不到您编写的选项,但我可以在dpkg-deb上看到这些选项。
    但是我可以’如果该文件具有符号链接,则将其解压缩,例如:./data/dalvik-cache到/ android_root / data / dalvik-cache。
    如果仅查看deb文件,我们可以在android上使用ZArchiver。
    谢谢…

发表评论