要查看或提取rpm和deb包内容而不安装,需使用特定命令行工具:1. 对于rpm包,使用 rpm -qpl <package_file.rpm> 查看文件列表;通过 rpm2cpio <package_file.rpm> | cpio -idmv 提取内容。2. 对于deb包,使用 dpkg -c <package_file.deb> 查看文件列表;通过 ar x <package_file.deb> 提取出 data.tar.xz 等组件,再用 tar xf data.tar.xz 解压内容。这些操作可在不安装软件的情况下检查其内部结构,有助于安全审计、理解软件布局和预判依赖关系,从而提升系统安全性和维护效率。

要查看软件包里的文件列表或者直接把包里的内容提取出来,而不需要实际安装它们,核心操作就是使用命令行工具。对于RPM包,你可以用
rpm -qpl
rpm2cpio
cpio
dpkg -c
ar
tar
解决方案
好吧,你手上有一个
.rpm
.deb
对于RPM包(.rpm):
查看文件列表: 如果你想知道一个RPM包在安装后会把哪些文件放到哪里,这取决于这个包是否已经安装在你的系统上。
包已安装在系统上: 直接使用
rpm -ql <package_name>
nginx
rpm -ql nginx
包文件未安装(你只有一个.rpm文件): 这时你需要用
rpm -qpl <package_file.rpm>
rpm -qpl myapp-1.0.0-1.x86_64.rpm
提取包内容: 提取RPM包的内容稍微有点意思,因为它内部并不是一个简单的tarball。RPM包的数据部分通常是一个CPIO归档。你需要
rpm2cpio
cpio
# 假设你的RPM包是 myapp-1.0.0-1.x86_64.rpm rpm2cpio myapp-1.0.0-1.x86_64.rpm | cpio -idmv
rpm2cpio
cpio -idmv
-i
-d
-m
-v
执行这个命令后,RPM包里的所有文件和目录结构就会在你当前的工作目录下被重建出来。是不是感觉挺方便的?
对于DEB包(.deb):
DEB包的结构相对来说更直接一点,它本质上是一个
ar
debian-binary
control.tar.gz
data.tar.xz
查看文件列表: 和RPM包类似,也有两种情况:
包已安装在系统上: 使用
dpkg -L <package_name>
dpkg -L firefox
包文件未安装(你只有一个.deb文件): 你可以用
dpkg -c <package_file.deb>
data.tar.xz
ar t <package_file.deb>
debian-binary
control.tar.gz
data.tar.xz
data.tar.xz
data.tar.gz
data.tar.bz2
tar tf
提取包内容: 要提取DEB包的内容,你需要分两步走:
ar
.deb
data.tar.xz
data.tar.gz
data.tar.bz2
tar
data.tar
# 假设你的DEB包是 myapp_1.0.0-1_amd64.deb mkdir myapp_extracted cd myapp_extracted ar x ../myapp_1.0.0-1_amd64.deb # 执行后,当前目录会多出 debian-binary, control.tar.gz, data.tar.xz 等文件 # 现在解压实际数据部分 tar xf data.tar.xz # 或者 tar xf data.tar.gz, tar xf data.tar.bz2,取决于你提取出来的实际文件名
这样,所有的应用程序文件就会被解压到你当前创建的
myapp_extracted
你可能会问,我直接安装不就行了吗?为什么还要费劲去查看这些包里到底有什么?这其实是一个很好的习惯,尤其是在处理那些来源不明、或者你需要高度信任的软件时。
从我个人的经验来看,这不仅仅是出于“安全偏执”,它有实实在在的价值:
以上就是如何查看软件包文件列表 提取rpm/deb包内容指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号