首页/系统/Linux 运维命令速查/rpm2cpio/dpkg-deb 解包应急取文件

rpm2cpio/dpkg-deb 解包应急取文件

包装了但文件缺失、或想不改系统拿某个工具:rpm2cpio 与 dpkg-deb 直接把包解开看内容/取文件。

Linux 运维命令速查系统更新于 2026-10-13

rpm2cpio 与 dpkg-deb 是什么

两个工具用来在不安装的前提下打开软件包:rpm2cpio 把 RPM 转换成 cpio 流,配合 cpio 可以列出或提取包内文件;dpkg-deb 则直接支持查看元信息与解包。典型用途是误删系统文件后,从同版本包装回那一个文件,或者只想看看某个包里到底有什么。

基本信息

RPM 侧rpm2cpio 包.rpm | cpio -idmv;rpm -qpl 包.rpm 只列出内容
DEB 侧dpkg-deb -x 包.deb 目录;dpkg-deb -I 包.deb 看元信息
所属组件rpm / cpio / dpkg
适用场景应急取回单个文件、核对包内容

典型使用场景

  • 误删系统文件后,从同版本包装回原文件
  • 不安装的前提下查看包内到底包含哪些路径
  • 对比两个版本包的内容差异
  • 从包里取出一个诊断工具到临时目录使用
  • 核对某个二进制来自哪个包、属于哪个版本
  • 在没有包管理数据库的环境里临时解压使用

RPM 侧

RPM 侧
rpm2cpio nginx-1.24.rpm | cpio -idmv     # 解出包内全部文件
rpm -qpl nginx-1.24.rpm | head           # 只列出包内路径,不解包
rpm2cpio nginx-1.24.rpm | cpio -idv ./usr/sbin/nginx   # 只取单个文件
rpm -qp --scripts nginx-1.24.rpm | head  # 看安装脚本,判断副作用
rpm -Vf /usr/sbin/nginx                  # 提取后复核文件完整性

DEB 侧

DEB 侧
dpkg-deb -x package.deb /tmp/extract  # 解出文件到指定目录
dpkg-deb -I package.deb | head        # 查看控制信息与依赖
dpkg-deb -c package.deb | head        # 列出包内文件与权限
cp /tmp/extract/usr/bin/tool /usr/bin/  # 按需取回单个文件
dpkg -V <包名>                        # 复核已安装文件的完整性

常用组合

目的RPM 侧DEB 侧
列内容rpm -qpldpkg-deb -c
解包rpm2cpio | cpio -idmvdpkg-deb -x
看元信息rpm -qpidpkg-deb -I
校验已装文件rpm -Vf 路径dpkg -V 包名
看安装脚本rpm -qp --scriptsdpkg-deb -I 中的脚本段
手工提取的文件不会登记进包数据库,包的归属信息缺失,之后做完整性校验会报文件不一致;因此它只适合应急,长期方案是用包管理器重新安装对应包。
取文件时版本必须与原装一致:用错版本的库或二进制替换回系统,会制造更隐蔽的故障,比文件缺失更难排查。
恢复文件后建议用 rpm -V 或 dpkg -V 复核完整性,确认权限、大小与校验和都对得上,再结束这次应急处理。

易错点

  • 用错版本的包取回文件:版本不匹配引入隐性故障,比原来的缺失问题更难定位
  • 手工提取的文件不写进包数据库:后续完整性校验一直报异常,需要说明清楚
  • 不看安装脚本就执行提取:包内脚本可能带有副作用,应急操作前先看一眼
  • 把解包当安装用:缺少依赖与配置,程序仍然跑不起来

数据来源与参考

  • man 8 rpm2cpio
  • man 1 dpkg-deb
  • cpio 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌