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
        • 1. 文件位置
        • 2. 四个阶段说明
        • 3. 脚本示例
          • 3.1 postinst(安装后执行)
          • 3.2 postrm(卸载后执行)
          • 3.3 preinst(安装前执行)
          • 3.4 prerm(卸载前执行)
        • 4. 实战注意点
      • Step5-Debian下构造-rules
      • Step6-Log-编译细节
      • Step7-Log-安装细节
      • Step8-Log-制品细节
  • Ambari部分

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

Step5-Debian下构造-inst|rmpre/post

# 1. 文件位置

在 Redis 的打包目录下,四个脚本命名需与包名一致,并以阶段后缀结尾:


bigtop-packages/src/deb/redis/redis.postinst
bigtop-packages/src/deb/redis/redis.preinst
bigtop-packages/src/deb/redis/redis.postrm
bigtop-packages/src/deb/redis/redis.prerm

1
2
3
4
5
6

image-20250818132008103

# 2. 四个阶段说明

脚本 执行时机 典型作用
preinst 包安装/升级前 创建用户组、准备系统环境
postinst 包安装/升级后 创建目录、初始化配置、注册 alternatives
prerm 包卸载/升级前 移除配置链接、关闭服务
postrm 包卸载/升级后 清理日志、删除残留目录

总结

这四个脚本相当于 生命周期钩子,类似 RPM 的 %pre/%post/%preun/%postun。
通过它们,开发者可以精确控制包在安装和卸载过程中的环境变化。

# 3. 脚本示例

# 3.1 postinst(安装后执行)

#!/bin/bash
# 版权所有 (c) JaneTTR 2025
COMPONENT_NAME="redis"
COMPONENT_USER="redis"
COMPONENT_GROUP="hadoop"

ETC_DIR="/usr/bigtop/3.2.0/etc/redis"
LIB_DIR="/usr/bigtop/3.2.0/var/lib/redis"
ALT_NAME="${COMPONENT_NAME}-conf"
ALT_PATH="${ETC_DIR}/conf.empty"

NP_ETC_DIR="/etc/${COMPONENT_NAME}"
NP_LOG_DIR="/var/log/${COMPONENT_NAME}"
NP_RUN_DIR="/var/run/${COMPONENT_NAME}"

case "$1" in
    configure)
        mkdir -p "$NP_ETC_DIR" "$NP_LOG_DIR" "$NP_RUN_DIR" "$LIB_DIR"
        update-alternatives --install "$NP_ETC_DIR/conf" "$ALT_NAME" "$ALT_PATH" 30
        chown -R "$COMPONENT_USER:$COMPONENT_GROUP" "$LIB_DIR" "$NP_LOG_DIR" "$NP_RUN_DIR"
        ;;
esac
exit 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 3.2 postrm(卸载后执行)

#!/bin/bash
set -e
NP_LOG_DIR="/var/log/redis"

case "$1" in
    remove|purge)
        rm -rf "$NP_LOG_DIR" || true
        ;;
esac
exit 0
1
2
3
4
5
6
7
8
9
10

# 3.3 preinst(安装前执行)

#!/bin/bash
set -e
COMPONENT_USER="redis"
COMPONENT_GROUP="hadoop"
COMPONENT_HOME="/home/redis"

case "$1" in
    install|upgrade)
        if ! getent group "$COMPONENT_GROUP" >/dev/null; then
            addgroup --system "$COMPONENT_GROUP"
        fi
        if ! getent passwd "$COMPONENT_USER" >/dev/null; then
            adduser --system --ingroup "$COMPONENT_GROUP" \
                --home "$COMPONENT_HOME" --shell /bin/bash \
                --gecos "$COMPONENT_USER" "$COMPONENT_USER"
        fi
        ;;
esac
exit 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 3.4 prerm(卸载前执行)

#!/bin/bash
set -e
COMPONENT_NAME="redis"
ALT_NAME="${COMPONENT_NAME}-conf"
ALT_PATH="/usr/bigtop/3.2.0/etc/redis/conf.empty"

case "$1" in
    remove|purge)
        update-alternatives --remove "$ALT_NAME" "$ALT_PATH" || true
        ;;
esac
exit 0
1
2
3
4
5
6
7
8
9
10
11
12

# 4. 实战注意点

  1. 用户与组:建议在 preinst 中创建,避免服务启动失败。
  2. 目录权限:统一在 postinst 中调整,保证 redis 用户可读写。
  3. 配置替换:通过 update-alternatives 实现多版本切换。
  4. 清理残留:在 postrm 中清理日志和缓存,避免系统污染。
#Ubuntu22.04#Redis#bigtop#buildroot#DEB打包
Step5-Debian下构造-install
Step5-Debian下构造-rules

← Step5-Debian下构造-install Step5-Debian下构造-rules→

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