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指令解读[三]
      • Step9-spec指令解读[四]
        • 1. %files 阶段流程可视化
        • 2. 归档流程和目录落盘
        • 3. 日志溯源与产物说明
        • 4. rpm 包最终输出路径
      • Step10-spec指令解读[五]
      • Step11-spec执行钩子解读[一]
      • Step12-spec执行钩子解读[二]
  • 其他技巧

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

Step9-spec指令解读[四]%files

install 阶段归档结束后,rpm 制作进入 %files 阶段。这里会把 BUILDROOT 目录下所有归档内容,按照 spec 文件的 %files 区块, “一一打包进 rpm 文件”,并完成各种依赖、属性、metadata 的补全。

# 1. %files 阶段流程可视化

%files 阶段流程图

流程说明:

  • spec 文件中的 %files 区块列出了需要被纳入 rpm 包的所有路径和文件类型
  • rpm 构建工具会遍历 BUILDROOT 目录下所有匹配项,把它们写入最终的 rpm 包

# 2. 归档流程和目录落盘

install 目录内容归档 rpm 包

  • %files 阶段就是把 BUILDROOT 下已经归档好的目录和文件,全部纳入 rpm 包内
  • rpm 包里最终会保留这些完整的子目录和权限结构

# 3. 日志溯源与产物说明

结合日志,看整个归档与 rpm 写盘流程:

09:32:13.839 [ERROR] [system.err] + /usr/lib/rpm/check-buildroot
09:32:14.062 [QUIET] [system.out] Processing files: redis_3_2_0-7.4.0-1.el8.x86_64
09:32:14.093 [LIFECYCLE] [org.gradle.launcher.daemon.server.Daemon]
09:32:14.093 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:14.093 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:14.050 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger]
09:32:14.050 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] > Task :redis-rpm
09:32:14.115 [ERROR] [system.err] warning: Duplicate build-ids /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/sr
c/redis-sentinel and /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/src/redis-check-rdb
09:32:14.120 [ERROR] [system.err] warning: Duplicate build-ids /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/sr
c/redis-sentinel and /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/src/redis-check-aof
09:32:14.120 [ERROR] [system.err] warning: Duplicate build-ids /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/sr
c/redis-sentinel and /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64/usr/bigtop/3.2.0/usr/lib/redis/src/redis-server
09:32:20.962 [QUIET] [system.out] Provides: redis_3_2_0 = 7.4.0-1.el8 redis_3_2_0(x86-64) = 7.4.0-1.el8
09:32:20.962 [QUIET] [system.out] Requires(interp): /bin/sh /bin/sh /bin/sh /bin/sh
09:32:20.962 [QUIET] [system.out] Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
09:32:20.962 [QUIET] [system.out] Requires(pre): /bin/sh
09:32:20.962 [QUIET] [system.out] Requires(post): /bin/sh
09:32:20.962 [QUIET] [system.out] Requires(preun): /bin/sh
09:32:20.962 [QUIET] [system.out] Requires(postun): /bin/sh
09:32:20.962 [QUIET] [system.out] Requires: /bin/bash /bin/sh /bin/tcsh /usr/bin/env libc.so.6()(64bit) libc.so.6(GLIBC_2.10)(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(G
LIBC_2.17)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.27)(64bit) libc.so.6(GLIBC_2.28)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.2)(64bit) libc.so.6
(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.6)(64bit) libc.so.6(GLIBC_2.7)(64bit) libc.so.6(GLIBC_2.9)(64bit) libdl.so.2()(64bit) libdl.so.2(GLIBC_2.2.5)(64bit) libm.so.6()(64bit
) libm.so.6(GLIBC_2.2.5)(64bit) libpthread.so.0()(64bit) libpthread.so.0(GLIBC_2.12)(64bit) libpthread.so.0(GLIBC_2.2.5)(64bit) libpthread.so.0(GLIBC_2.3.2)(64bit) librt.so.
1()(64bit) perl(Cwd) perl(Getopt::Long) perl(strict) perl(warnings) rtld(GNU_HASH)
09:32:20.962 [QUIET] [system.out] Checking for unpackaged file(s): /usr/lib/rpm/check-files /opt/modules/bigtop/build/redis/rpm/BUILDROOT/redis_3_2_0-7.4.0-1.el8.x86_64
09:32:24.092 [LIFECYCLE] [org.gradle.launcher.daemon.server.Daemon]
09:32:24.092 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:24.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
09:32:34.092 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
09:32:20.948 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger]
09:32:20.948 [LIFECYCLE] [class org.gradle.internal.buildevents.TaskExecutionLogger] > Task :redis-rpm
09:32:38.257 [QUIET] [system.out] Wrote: /opt/modules/bigtop/build/redis/rpm/RPMS/x86_64/redis_3_2_0-7.4.0-1.el8.x86_64.rpm

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

关键信息点:

  • 先做 build-id 校验、依赖关系补全、属性检测
  • 扫描 %files 区块匹配的所有实际文件和目录
  • 检查是否有“漏归档”文件(check-files),防止包内容遗漏
  • 最终输出 rpm 包

结果

# 4. rpm 包最终输出路径

归档结束后,rpm 包会被写入如下位置:

/opt/modules/bigtop/build/redis/rpm/RPMS/x86_64/redis_3_2_0-7.4.0-1.el8.x86_64.rpm
1

rpm 产物写盘

  • 这个 rpm 文件即为所有归档内容的最终制品
#Bigtop#Gradle#SRPM#打包流程#大数据运维
Step8-spec指令解读[三]
Step10-spec指令解读[五]

← Step8-spec指令解读[三] Step10-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
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式