TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 支持&共建

    • 蓝图愿景
    • 技术支持
    • 合作共建
登陆
GitHub (opens new window)
  • 方法论

  • 组件编译技巧

  • 打包技巧-RPM

  • 实战-日志&源码解读全链路周期

    • Step0-打包完整链路
    • Step1-bigtop.bom配置
    • Step2-源码包触发下载
    • Step3-Tarball制备全流程
    • 适用于REDHAT

      • Step4-srpm源码包产出
      • Step5-rpm任务执行
      • Step6-spec指令解读[一]
      • Step7-spec指令解读[二]
      • Step8-spec指令解读[三]
        • 1. %install 阶段流程概览
        • 2. BUILDROOT 目录结构
        • 3. install 脚本参数设计
          • 参数说明表
        • 4. 日志细节与参数映射
      • Step9-spec指令解读[四]
      • Step10-spec指令解读[五]
      • Step11-spec执行钩子解读[一]
      • Step12-spec执行钩子解读[二]
  • 其他技巧

  • GOD-Bigtop
  • 实战-日志&源码解读全链路周期
  • 适用于REDHAT
JaneTTR
2025-07-05
目录

Step8-spec指令解读[三]%install

本节聚焦 rpm 构建流程中 %install 阶段的真正作用,结合 BUILDROOT 产物目录、参数传递、以及自动化安装脚本结构,详细还原从编译到归档的自动化全链路。

# 1. %install 阶段流程概览

这一步的关键任务,就是将上一步 %build 得到的可执行文件、库、配置、文档等,有序归档到 BUILDROOT 目录,为最终 rpm 包生成做准备。

install阶段流程图

# 2. BUILDROOT 目录结构

BUILDROOT 就是所有安装内容的“临时家园”,这里目录和权限结构会严格模拟 rpm 包将来在目标系统的安装结果。

  • 每一个包的 BUILDROOT 路径形如:

    /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/
    
    1
  • 下层目录通常含有 /usr/bin、/usr/share/doc、/etc/redis、/usr/lib/redis 等,完全模拟 rpm 安装后的落盘布局

# 3. install 脚本参数设计

在 %install 阶段,spec 文件会通过 bash 脚本批量复制和安装各类产物。参数全由上游自动生成,极大提高了灵活性和可移植性。

日志片段还原如下:

bash /opt/modules/bigtop/build/redis/rpm/SOURCES/install_redis.sh \
  --bin-dir=/usr/bigtop/3.2.0/usr/bin \
  --build-dir=/opt/modules/bigtop/build/redis/rpm//BUILD \
  --doc-dir=/usr/bigtop/3.2.0/usr/share/doc \
  --etc-dir=/usr/bigtop/3.2.0/etc/redis \
  --lib-dir=/usr/bigtop/3.2.0/usr/lib/redis \
  --man-dir=/usr/bigtop/3.2.0/usr/share/man \
  --prefix=/opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64 \
  --tar-name=redis-7.4.0 \
  --var-dir=/usr/bigtop/3.2.0/var/lib/redis
1
2
3
4
5
6
7
8
9
10

# 参数说明表

参数 说明 作用
--bin-dir 安装目标二进制目录 rpm安装后 redis-server、redis-cli 所在目录
--build-dir 上游源码编译产物目录 make 产物提取目录
--doc-dir 文档安装目录 README、LICENSE 文件目标路径
--etc-dir 配置文件安装目录 redis.conf 安装位置
--lib-dir 动态库安装目录 redis.so、依赖库
--man-dir man 帮助文档目录 man1、man8等手册页
--prefix BUILDROOT 根目录 归档所有文件的根路径(rpm包最终形态)
--tar-name 解压源码主目录名 提供给 make install/脚本定位
--var-dir 数据/日志目录 redis 持久化与数据文件目录

这些参数将由 install_redis.sh 脚本用 getopt 逐一解析,并把文件复制/链接到 BUILDROOT 目录下指定位置。

# 4. 日志细节与参数映射

日志中详细回显了参数传递和变量解析过程,便于追溯:


make[1]: Leaving directory '/opt/modules/bigtop/build/redis/rpm/BUILD/redis-7.4.0/src'
09:32:13.308 [ERROR] [system.err] + exit 0
09:32:13.310 [QUIET] [system.out] Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.fmATbu
09:32:13.312 [ERROR] [system.err] + umask 022
09:32:13.312 [ERROR] [system.err] + cd /opt/modules/bigtop/build/redis/rpm//BUILD
09:32:13.312 [ERROR] [system.err] + '[' /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64 '!=' / ']'
09:32:13.312 [ERROR] [system.err] + rm -rf /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64
09:32:13.327 [ERROR] [system.err] ++ dirname /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64
09:32:13.328 [ERROR] [system.err] + mkdir -p /opt/modules/bigtop/build/redis/rpm/BUILDROOT
09:32:13.330 [ERROR] [system.err] + mkdir /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64
09:32:13.331 [ERROR] [system.err] + cd redis-7.4.0
09:32:13.331 [ERROR] [system.err] + /usr/bin/rm -rf /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64
09:32:13.332 [ERROR] [system.err] + bash /opt/modules/bigtop/build/redis/rpm/SOURCES/install_redis.sh --bin-dir=/usr/bigtop/3.2.0/usr/bin --build-dir=/opt/modules/bigtop/bui
ld/redis/rpm//BUILD --doc-dir=/usr/bigtop/3.2.0/usr/share/doc --etc-dir=/usr/bigtop/3.2.0/etc/redis --lib-dir=/usr/bigtop/3.2.0/usr/lib/redis --man-dir=/usr/bigtop/3.2.0/usr
/share/man --prefix=/opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64 --tar-name=redis-7.4.0 --var-dir=/usr/bigtop/3.2.0/var/lib/redis
09:32:13.334 [ERROR] [system.err] ++ getopt -n /opt/modules/bigtop/build/redis/rpm/SOURCES/install_redis.sh -o '' -l bin-dir: -l build-dir: -l conf-dir: -l doc-dir: -l etc-d
ir: -l lib-dir: -l man-dir: -l var-dir: -l prefix: -l tar-name: -- --bin-dir=/usr/bigtop/3.2.0/usr/bin --build-dir=/opt/modules/bigtop/build/redis/rpm//BUILD --doc-dir=/usr/
bigtop/3.2.0/usr/share/doc --etc-dir=/usr/bigtop/3.2.0/etc/redis --lib-dir=/usr/bigtop/3.2.0/usr/lib/redis --man-dir=/usr/bigtop/3.2.0/usr/share/man --prefix=/opt/modules/bi
gtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64 --tar-name=redis-7.4.0 --var-dir=/usr/bigtop/3.2.0/var/lib/redis
09:32:13.349 [ERROR] [system.err] + OPTS=' --bin-dir '\''/usr/bigtop/3.2.0/usr/bin'\'' --build-dir '\''/opt/modules/bigtop/build/redis/rpm//BUILD'\'' --doc-dir '\''/usr/bigt
op/3.2.0/usr/share/doc'\'' --etc-dir '\''/usr/bigtop/3.2.0/etc/redis'\'' --lib-dir '\''/usr/bigtop/3.2.0/usr/lib/redis'\'' --man-dir '\''/usr/bigtop/3.2.0/usr/share/man'\''
--prefix '\''/opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64'\'' --tar-name '\''redis-7.4.0'\'' --var-dir '\''/usr/bigtop/3.2.0/var/lib/redis'\'
' --'
09:32:13.349 [ERROR] [system.err] + '[' 0 '!=' 0 ']'
09:32:13.349 [ERROR] [system.err] + eval set -- ' --bin-dir '\''/usr/bigtop/3.2.0/usr/bin'\'' --build-dir '\''/opt/modules/bigtop/build/redis/rpm//BUILD'\'' --doc-dir '\''/u
sr/bigtop/3.2.0/usr/share/doc'\'' --etc-dir '\''/usr/bigtop/3.2.0/etc/redis'\'' --lib-dir '\''/usr/bigtop/3.2.0/usr/lib/redis'\'' --man-dir '\''/usr/bigtop/3.2.0/usr/share/m
an'\'' --prefix '\''/opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64'\'' --tar-name '\''redis-7.4.0'\'' --var-dir '\''/usr/bigtop/3.2.0/var/lib/r
edis'\'' --'
09:32:13.349 [ERROR] [system.err] ++ set -- --bin-dir /usr/bigtop/3.2.0/usr/bin --build-dir /opt/modules/bigtop/build/redis/rpm//BUILD --doc-dir /usr/bigtop/3.2.0/usr/share/
doc --etc-dir /usr/bigtop/3.2.0/etc/redis --lib-dir /usr/bigtop/3.2.0/usr/lib/redis --man-dir /usr/bigtop/3.2.0/usr/share/man --prefix /opt/modules/bigtop/build/redis/rpm/BU
ILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64 --tar-name redis-7.4.0 --var-dir /usr/bigtop/3.2.0/var/lib/redis --
09:32:13.349 [ERROR] [system.err] + set -ex
09:32:13.349 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + BIN_DIR=/usr/bigtop/3.2.0/usr/bin
09:32:13.350 [ERROR] [system.err] + shift 2
09:32:13.350 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + BUILD_DIR=/opt/modules/bigtop/build/redis/rpm//BUILD
09:32:13.350 [ERROR] [system.err] + shift 2
09:32:13.350 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + DOC_DIR=/usr/bigtop/3.2.0/usr/share/doc
09:32:13.350 [ERROR] [system.err] + shift 2
09:32:13.350 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + ETC_DIR=/usr/bigtop/3.2.0/etc/redis
09:32:13.350 [ERROR] [system.err] + shift 2
09:32:13.350 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + LIB_DIR=/usr/bigtop/3.2.0/usr/lib/redis
09:32:13.350 [ERROR] [system.err] + shift 2
09:32:13.350 [ERROR] [system.err] + true
09:32:13.350 [ERROR] [system.err] + case "$1" in
09:32:13.350 [ERROR] [system.err] + MAN_DIR=/usr/bigtop/3.2.0/usr/share/man

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  • 每个参数均由脚本动态解析为 shell 变量
  • 真正的归档和复制逻辑随后展开,rpm 包结构也在此完成最终定型
#Bigtop#Gradle#SRPM#打包流程#大数据运维
Step7-spec指令解读[二]
Step9-spec指令解读[四]

← Step7-spec指令解读[二] Step9-spec指令解读[四]→

最近更新
01
bigtop-select 打包缺 compat 报错修复 deb
07-16
02
bigtop-select 打包缺 control 文件报错修复 deb
07-16
03
首次编译-环境初始化 必装
07-16
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式