解压缩 RPM 包可以分为两种场景:
- 全部解压
- 部分提取
场景一:使用 rpm2cpio
和 cpio
全部解压
这种方法允许你将 RPM 包转换为 cpio 归档文件,然后从中提取文件到指定目录。
-
准备 RPM 包:确保你已经有了需要解压的 RPM 包,例如
example.rpm
。 -
转换并提取文件:
- 首先,使用
rpm2cpio
将 RPM 包转换为 cpio 归档文件。rpm2cpio example.rpm > example.cpio
- 然后,使用
cpio
命令从生成的 cpio 文件中提取内容。
这里的选项解释如下:cpio -idmv < example.cpio
-i
:表示进入提取模式。-d
:如果需要则创建目录。-m
:保留原始文件的修改时间。-v
:显示处理过程中的文件名(可选)。
- 首先,使用
-
清理临时文件:如果你不再需要中间生成的
example.cpio
文件,可以删除它。rm example.cpio
场景二:使用 rpm
查看内容并结合 rpm2cpio
和 cpio
提取部分文件
1. 列出 RPM 包中的文件
首先,你可以使用 rpm
命令来列出 RPM 包中的所有文件:
rpm -qlp example.rpm
2. 使用 rpm2cpio
和 cpio
提取特定文件
假设你想从 RPM 包中提取特定的文件而不是整个包的内容,可以按照以下步骤操作:
-
转换 RPM 包为 cpio 归档:
rpm2cpio example.rpm > example.cpio
-
提取特定文件:
使用cpio
命令提取你感兴趣的文件。例如,如果你只想提取/usr/bin/example
文件,可以这样做:cat example.cpio | cpio -id ./usr/bin/example
如果你想提取多个文件,可以在命令中指定它们:
cat example.cpio | cpio -id ./usr/bin/example ./etc/example.conf
提取所有文件的命令如下:
cat example.cpio | cpio -idmv