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

举报
Tiamo_T 发表于 2022/02/07 13:19:13 2022/02/07
【摘要】 如何查看或提取捆绑在各种操作系统包中的文件。例如,我想知道如何查看(和提取)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 代表红帽软件包管理器。以下示例说明如何在不提取或安装 rpm 包的情况下查看 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

  • rpm — 命令
  • q — 查询 rpm 文件
  • 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 中的 depot 包

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

DEPOT 文件是 HP-UX Software Distributor Catalog Depot 文件。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 命令查看 depot 包的内容,如下所示。

$ swlist -l file -s /root/ovcsw_3672.depot
# Initializing...
# Contacting 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 命令将 software_selections 从软件源复制或合并到一个或多个软件仓库 target_selections。使用 swcopy 中的解压缩选项,您可以从软件仓库软件包中提取文件。

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

由于 depot 文件是 tar 文件,因此您可以使用正常的 tar 提取来提取,如下所示。

$ tar -xvf filename

4. Windows 中的MSI

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

使用 lessmsi 列出 MSI 包中的文件

名为lessmsi.exe的实用程序用于在不安装的情况下查看msi 包中的文件。相同的实用程序也用于提取 msi 包。选择要查看内容的 msi。lessmsi 将列出 msi 中可用的文件。

使用 msiexec 从 MSI 包中提取文件

Windows Installer Tool (Msiexec.exe) 用于从 MSI 包中提取文件。它可以在“管理员”安装模式下打开一个 MSI 包,它可以在不执行安装的情况下提取文件,如下所示。

C:\>msiexec /a ovcsw_3672.msi /qb TARGETDIR="C:\ovcsw"
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。