TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • Ambari 深度专题

  • Bigtop 方法论

  • 自定义集成

  • Ambari Server 与 Web

  • Ambari Metrics

  • Ambari Plus 思考

  • Redis集成实战

    • Bigtop通用部分

    • Bigtop打包部分

      • RPM

      • DEB

        • Step4-buildroot处理
        • Step5-Debian下构造-source
        • Step5-Debian下构造-compat
        • Step5-Debian下构造-control
        • Step5-Debian下构造-copyright
        • Step5-Debian下构造-dirs
        • Step5-Debian下构造-install
        • Step5-Debian下构造-inst|rm
        • Step5-Debian下构造-rules
        • Step6-Log-编译细节
          • Step7-Log-安装细节
          • Step8-Log-制品细节
      • Ambari部分

    • 通用代码模板

    • 各组件代码

    • 技术专题
    • Redis集成实战
    • Bigtop打包部分
    • DEB
    JaneTTR
    2025-06-24
    目录
    1. 进入编译目录
    2. 调用 rules 文件
    3. 执行 do-component-build
    4. 加载 bigtop.bom → 依赖版本注入
    5. 正式 make 编译

    Step6-Log-编译细节

    我们的编译命令是:

    gradle redis-pkg -PparentDir=/usr/bigtop -Dbuildwithdeps=true -PpkgSuffix
    
    1

    image-20250818140345515

    本节通过实际日志片段,完整还原 DEB 打包 下 Redis 的构建细节,并和 RPM 版本进行对照分析。

    # 1. 进入编译目录

    02:27:14.971 [QUIET] [system.out] make[1]: Entering directory '/opt/modules/bigtop/output/redis/redis-3-2-0-7.4.0'
    
    1
    • DEB 构建目录位于 output 下,而 RPM 构建目录在 build → BUILD/ 更深层。
    • 两者逻辑一致:准备一个干净的中间目录作为编译容器。

    提示

    DEB 和 RPM 的主要区别不在源码编译,而是产物落盘路径和中间目录组织。


    # 2. 调用 rules 文件

    02:27:14.983 [QUIET] [system.out]    debian/rules override_dh_auto_build
    
    1
    • debian/rules 是 DEB 构建的核心入口,等价于 RPM 的 %build 宏。
    • 在我们的 rules 文件里,定义了 override_dh_auto_build,最终会触发 redis 的构建。

    笔记

    RPM → spec 的 %build DEB → rules 的 override_dh_auto_build 本质上都是“钩子函数”。

    # 3. 执行 do-component-build

    02:27:14.983 [QUIET] [system.out] env \
           REDIS_VERSION=7.4.0 \
           NEXUS_URL= \
           NEXUS_USERNAME= \
           NEXUS_PASSWORD= \
           bash debian/do-component-build \
           -Dversion= \
           -Dmaven.repo.local=/root/.m2/repository
    
    1
    2
    3
    4
    5
    6
    7
    8
    • 与 RPM 一样,真正的编译动作交给 do-component-build 脚本。
    • 参数通过 env 环境变量注入,确保 redis 能拿到正确的版本号和仓库信息。

    提示

    Bigtop 的设计理念 → 一切以环境变量驱动。无论 RPM 还是 DEB,调用逻辑完全统一。

    # 4. 加载 bigtop.bom → 依赖版本注入

    
    02:27:14.965 [QUIET] [system.out] dh_auto_configure: warning: Compatibility levels before 10 are deprecated (level 9 in use)
    02:27:14.969 [QUIET] [system.out]    debian/rules override_dh_auto_build
    02:27:14.971 [QUIET] [system.out] make[1]: Entering directory '/opt/modules/bigtop/output/redis/redis-3-2-0-7.4.0'
    02:27:14.983 [QUIET] [system.out] env \
    02:27:14.983 [QUIET] [system.out]       REDIS_VERSION=7.4.0 \
    02:27:14.983 [QUIET] [system.out]       NEXUS_URL= \
    02:27:14.983 [QUIET] [system.out]       NEXUS_USERNAME= \
    02:27:14.983 [QUIET] [system.out]       NEXUS_PASSWORD= \
    02:27:14.983 [QUIET] [system.out]       bash debian/do-component-build \
    02:27:14.983 [QUIET] [system.out]       -Dversion= \
    02:27:14.983 [QUIET] [system.out]       -Dmaven.repo.local=/root/.m2/repository
    02:27:14.985 [QUIET] [system.out] ++ dirname debian/do-component-build
    02:27:14.986 [QUIET] [system.out] + . debian/bigtop.bom
    02:27:14.986 [QUIET] [system.out] ++ ZOOKEEPER_VERSION=3.5.9
    02:27:14.986 [QUIET] [system.out] ++ HADOOP_VERSION=3.3.4
    02:27:14.986 [QUIET] [system.out] ++ HBASE_VERSION=2.4.13
    02:27:14.986 [QUIET] [system.out] ++ HIVE_VERSION=3.1.3
    02:27:14.986 [QUIET] [system.out] ++ TEZ_VERSION=0.10.1
    02:27:14.986 [QUIET] [system.out] ++ OOZIE_VERSION=5.2.1
    02:27:14.986 [QUIET] [system.out] ++ SOLR_VERSION=8.11.2
    02:27:14.986 [QUIET] [system.out] ++ SPARK_VERSION=3.5.5
    02:27:14.986 [QUIET] [system.out] ++ FLINK_VERSION=1.17.2
    02:27:14.986 [QUIET] [system.out] ++ PHOENIX_VERSION=5.1.2
    02:27:14.986 [QUIET] [system.out] ++ BIGTOP_GROOVY_VERSION=2.5.4
    02:27:14.986 [QUIET] [system.out] ++ BIGTOP_UTILS_VERSION=3.2.0-SNAPSHOT
    02:27:14.986 [QUIET] [system.out] ++ BIGTOP_SELECT_VERSION=3.2.0-SNAPSHOT
    02:27:14.986 [QUIET] [system.out] ++ BIGTOP_JSVC_VERSION=1.2.4
    02:27:14.986 [QUIET] [system.out] ++ ALLUXIO_VERSION=2.8.0
    02:27:14.986 [QUIET] [system.out] ++ KAFKA_VERSION=2.8.1
    02:27:14.986 [QUIET] [system.out] ++ YCSB_VERSION=0.17.0
    02:27:14.986 [QUIET] [system.out] ++ ZEPPELIN_VERSION=0.10.1
    02:27:14.986 [QUIET] [system.out] ++ GPDB_VERSION=5.28.5
    02:27:14.986 [QUIET] [system.out] ++ AMBARI_VERSION=2.7.5
    02:27:14.986 [QUIET] [system.out] ++ BIGTOP_AMBARI_MPACK_VERSION=2.7.5
    02:27:14.986 [QUIET] [system.out] ++ LIVY_VERSION=0.7.1
    02:27:14.986 [QUIET] [system.out] ++ RANGER_VERSION=2.4.0
    02:27:14.986 [QUIET] [system.out] ++ SQOOP_VERSION=1.4.7
    02:27:14.986 [QUIET] [system.out] ++ REDIS_VERSION=7.4.0
    02:27:14.986 [QUIET] [system.out] ++ DOLPHINSCHEDULER_VERSION=3.2.2
    02:27:14.986 [QUIET] [system.out] ++ DORIS_VERSION=2.1.7
    02:27:14.986 [QUIET] [system.out] ++ NIGHTINGALE_VERSION=7.7.2
    02:27:14.986 [QUIET] [system.out] ++ CATEGRAF_VERSION=0.4.1
    02:27:14.986 [QUIET] [system.out] ++ VICTORIAMETRICS_VERSION=1.109.1
    02:27:14.986 [QUIET] [system.out] ++ CLOUDBEAVER_VERSION=25.1.0
    02:27:14.986 [QUIET] [system.out] ++ CELEBORN_VERSION=0.5.3
    02:27:14.986 [QUIET] [system.out] ++ OZONE_VERSION=1.4.1
    02:27:14.986 [QUIET] [system.out] ++ IMPALA_VERSION=4.4.1
    02:27:14.986 [QUIET] [system.out] ++ TRINO_VERSION=474
    02:27:14.986 [QUIET] [system.out] ++ HUDI_VERSION=1.0.1
    02:27:14.986 [QUIET] [system.out] ++ PAIMON_VERSION=1.1.0
    02:27:14.986 [QUIET] [system.out] ++ ATLAS_VERSION=2.4.0
    02:27:14.986 [QUIET] [system.out] ++ SUPERSET_VERSION=4.1.2
    02:27:14.986 [QUIET] [system.out] ++ JDK_VERSION=1.8
    02:27:14.986 [QUIET] [system.out] ++ SCALA_VERSION=2.12.13
    02:27:14.986 [QUIET] [system.out] + make
    02:27:14.987 [QUIET] [system.out] make[2]: Entering directory '/opt/modules/bigtop/output/redis/redis-3-2-0-7.4.0'
    02:27:14.987 [QUIET] [system.out] cd src && make all
    
    
    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
    58
    59
    • 通过 source debian/bigtop.bom,所有组件版本一次性加载到当前 Shell。
    • 这就是为什么日志中会打印 ++ XXX_VERSION=... 的原因。
    • 任何依赖联动(如 HBase、Spark 与 Redis 兼容)都在这里解决。

    笔记

    DEB 与 RPM 都共享 bigtop.bom,这保证了版本的一致性。

    # 5. 正式 make 编译

    image-20250818141423594

    02:27:14.987 [QUIET] [system.out] cd src && make all
    make[1]: Entering directory '/opt/modules/bigtop/output/redis/redis-3-2-0-7.4.0/src'
        CC server.o
        CC redis-cli.o
        LINK redis-server
        LINK redis-cli
        LINK redis-benchmark
        INSTALL redis-check-rdb
        INSTALL redis-check-aof
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    • 进入 src 目录,执行标准的 make all。
    • 这里会构建出所有 Redis 二进制:redis-server、redis-cli、redis-benchmark、redis-check-* 等。
    • 最终产物安装到 debian/tmp/usr/bin,等待打包。
    #Redis#Stack集成#集成案例#Bigtop#自动化部署#版本适配
    Step5-Debian下构造-rules
    Step7-Log-安装细节

    ← Step5-Debian下构造-rules Step7-Log-安装细节→

    最近更新
    01
    当前版本 2026/08
    08-29
    02
    把 Ambari Server HA 稳稳地跑起来
    08-17
    03
    从一次启用操作追到主备就绪
    08-17
    更多文章>
    Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式