RPM 包日常操作与解包实战
在大数据组件集成和日常运维中,rpm 包是 RedHat/CentOS 体系下最重要的包管理形式。无论是安装、卸载、查询还是解包,还包括部分高级的 rpm 包制作,搞清楚工具依赖和常用命令,是每个工程师的基本功。
# 一、rpm 相关工具依赖说明
不同操作动作,需要依赖的 rpm 相关包不同:
工具命令 | 所属包名 | 主要用途 | 适用场景 | 默认安装 |
---|---|---|---|---|
rpm | rpm | 安装/卸载/查询/解包 | 日常包管理 | 一般有 |
rpm2cpio | rpm | 解包 rpm 文件内容 | 获取包内部所有文件 | 一般有 |
cpio | cpio | 解归档流 | 与 rpm2cpio 配合解包 | 常见有 |
rpmbuild | rpm-build | 制作/打包 rpm 文件 | 开发自定义 rpm 产物 | 需手装 |
# 工具安装命令举例
# 日常使用环境建议保证 rpm/cpio 都有
yum install rpm cpio -y
# 仅在需要自制 rpm 包时安装 rpmbuild
yum install rpm-build -y
1
2
3
4
5
2
3
4
5
# 二、rpm 包日常操作命令
日常运维、调试、验证等,最常用的命令如下:
操作内容 | 命令举例 | |
---|---|---|
安装 rpm 包 | rpm -ivh xxx.rpm | |
升级 rpm 包 | rpm -Uvh xxx.rpm | |
卸载 rpm 包 | rpm -e 包名 | |
查询包内文件 | rpm -qlp xxx.rpm | |
查询已装包 | `rpm -qa | grep 关键字` |
查看包详情 | rpm -qip xxx.rpm | |
查看脚本钩子内容 | rpm -q --scripts -p xxx.rpm |
# 三、rpm 包解包实战
在某些场景下,我们并不希望直接安装 rpm 包,而是提前解包审查其内部结构与文件。这类场景包括:
- 离线集成需要直接取出配置/脚本
- 检查补丁包实际内容是否合规
- 仅需拷贝部分文件到定制环境
- 跨系统、跨环境验证包结构
# 1. 解包命令:rpm2cpio + cpio
rpm2cpio your-package.rpm | cpio -divm
1
命令部分 | 说明 |
---|---|
rpm2cpio | 把 rpm 转成 cpio 流 |
cpio -divm | 解包,保持原目录层级 |
- 执行后会在当前目录下展开包内全部文件与结构
# 2. 快速查看 rpm 包文件列表
rpm -qlp your-package.rpm
1
- 仅显示 rpm 包中包含的所有文件路径,适合快速审查
# 四、实战案例
以 redis 组件 rpm 包为例,解包和文件审查:
rpm2cpio redis_3_2_0-7.4.0-1.el8.x86_64.rpm | cpio -divm
1
部分解包目录结构:
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/mutex.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/mutex_prof.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/nstime.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/pa.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/pac.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/pages.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/pai.h
./usr/bigtop/3.2.0/usr/lib/redis/deps/jemalloc/include/jemalloc/internal/peak.h
...
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
这样即可直接获取全部内容,便于二次集成、溯源与定制。
记住解压缩后的前缀
/usr/bigtop/3.2.0
这个前缀则是Bigtop的包文件统一前缀
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16