如何从 rpm,depot,msi和 deb 包中查看和提取文件
如何查看或提取捆绑在各种操作系统包中的文件。例如,我想知道如何查看(和提取)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"
- 点赞
- 收藏
- 关注作者
评论(0)