TT Bigdata TT Bigdata
首页
  • 部署专题

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

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

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

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

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

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

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

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

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

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

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

JaneTTR

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

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

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

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

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

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

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

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

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

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

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • 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
        • 1. 文件位置与角色
        • 2. 核心内容示例
        • 3. 逐段解读
          • 3.1 override_dh_auto_build
          • 3.2 override_dh_auto_install
          • 3.3 其他钩子
        • 4. 执行顺序与生命周期
        • 5. Redis 打包链回顾
      • Step6-Log-编译细节
      • Step7-Log-安装细节
      • Step8-Log-制品细节
  • Ambari部分

  • J-Redis集成-F
  • Bigtop打包部分
  • DEB
JaneTTR
2025-08-18
目录

Step5-Debian下构造-rules核心代码

# 1. 文件位置与角色

在 Debian 打包目录中,rules 文件位于:


bigtop-packages/src/deb/redis/rules

1
2
3

它的作用类似于 Makefile,由 debhelper 工具链驱动,控制了整个打包生命周期:

  • 构建阶段 → override_dh_auto_build
  • 安装阶段 → override_dh_auto_install
  • 裁剪阶段 → override_dh_strip
  • 清理阶段 → override_dh_auto_clean
  • 测试阶段 → override_dh_auto_test

image-20250818133123299

对比理解

  • RPM 体系:核心是 .spec 文件。
  • DEB 体系:核心是 rules 文件。
    两者都是“打包驱动脚本”,只是语法不同。

# 2. 核心内容示例

下面给出 Redis 的 rules 文件精简版:

#!/usr/bin/make -f
export DH_VERBOSE=1
export DH_OPTIONS

%:
	dh $@

# === 源码构建 ===
override_dh_auto_build:
	env \
		REDIS_VERSION=$(component_base_version) \
		NEXUS_URL=$(nexus_url) \
		NEXUS_USERNAME=$(nexus_username) \
		NEXUS_PASSWORD=$(nexus_password) \
		bash debian/do-component-build

# === 安装产物 ===
override_dh_auto_install:
	env REDIS_VERSION=$(component_base_version) \
		bash debian/install_$(pkg_original_name).sh \
			--bin-dir=$(bin_dir) \
			--etc-dir=$(etc_dir) \
			--var-dir=$(var_dir) \
			--doc-dir=$(doc_dir)/$(pkg_original_name)-$(component_base_version) \
			--lib-dir=$(lib_dir)

# === 关闭调试符号包 ===
override_dh_strip:
	dh_strip --no-automatic-dbgsym

# === 保留空钩子,防止出错 ===
override_dh_shlibdeps:
override_dh_strip_nondeterminism:

# === 清理与测试禁用 ===
override_dh_auto_clean:
	@echo "clean disabled"

override_dh_auto_test:
	@echo "skip auto test"
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

# 3. 逐段解读

# 3.1 override_dh_auto_build

  • 调用 do-component-build 脚本
  • 真正触发 Redis 源码编译
  • 环境变量如 REDIS_VERSION、NEXUS_URL 可灵活适配企业仓库

类似于 RPM 体系里的 %build 阶段。

# 3.2 override_dh_auto_install

  • 调用 install_redis.sh
  • 将编译产物复制到 debian/tmp 对应目录下
  • 包括 /usr/bin、/etc/redis、/usr/lib/redis 等

类似于 RPM %install 阶段,最终决定 deb 包内部的文件布局。

# 3.3 其他钩子

  • strip:关闭 .dbgsym,避免额外生成调试包
  • shlibdeps/strip_nondeterminism:保持空实现,避免引入复杂依赖
  • clean/test:禁用,减少编译耗时

注意

如果在生产环境开启 auto_clean,每次构建都会清理缓存目录, 对大项目(如 Hadoop)来说会非常耗时。 在 Redis 这种场景下,建议 禁用,只在必要时手动执行清理。

# 4. 执行顺序与生命周期

Debian 打包时的典型调用链如下:

  1. dh clean → 调用 override_dh_auto_clean
  2. dh build → 调用 override_dh_auto_build
  3. dh install → 调用 override_dh_auto_install
  4. dh strip → 调用 override_dh_strip
  5. dh binary → 打包 .deb

对照 RPM 的 %prep → %build → %install → %files,基本可以一一映射。

# 5. Redis 打包链回顾

至此,Redis 的 Step5 系列文件 全部构建完成:

  • compat → 兼容级别
  • control → 包元数据
  • copyright → 版权说明
  • dirs → 目录结构
  • install → 文件映射
  • pre/post inst|rm → 生命周期脚本
  • rules → 构建/安装驱动
#Ubuntu22.04#Redis#bigtop#buildroot#DEB打包
Step5-Debian下构造-inst|rm
Step6-Log-编译细节

← Step5-Debian下构造-inst|rm Step6-Log-编译细节→

最近更新
01
[/metrics/aggregated] — 聚合数据范围 检查点
09-19
02
[/metrics] — 反向分析接口参数 请求抓包
09-17
03
[/metrics] — 普通指标写入方法 POST
09-17
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式