Step6-Log-编译细节
我们的编译命令是:
gradle redis-pkg -PparentDir=/usr/bigtop -Dbuildwithdeps=true -PpkgSuffix
1
本节通过实际日志片段,完整还原 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
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
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 编译
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
2
3
4
5
6
7
8
9
- 进入
src
目录,执行标准的make all
。 - 这里会构建出所有 Redis 二进制:
redis-server
、redis-cli
、redis-benchmark
、redis-check-*
等。 - 最终产物安装到
debian/tmp/usr/bin
,等待打包。
- 01
- [/metrics/aggregated] — 聚合数据范围 检查点09-19
- 02
- [/metrics] — 反向分析接口参数 请求抓包09-17
- 03
- [/metrics] — 普通指标写入方法 POST09-17