Step5-Debian下构造-dirs
# 1. 文件位置
在 Redis 打包目录下,dirs 文件放置在:
bigtop-packages/src/deb/redis/redis.dirs
1
2
3
2
3
命名规范
- 文件名前缀 必须与
control文件中 Package 名称保持一致; - Redis 采用单包模式,因此只有一个
redis.dirs; - Hadoop 等大型组件往往是多子包模式,会出现
hadoop-common.dirs、hadoop-hdfs.dirs等多个文件。
# 2. 作用与原理
*.dirs 文件主要解决 打包阶段目录结构缺失的问题。它的功能相当于:
install -d -m 755 目标目录
1
作用包括:
目录预创建:确保打包时目标路径已经存在,避免
install/cp报错。结构标准化:提前定义好
/etc、/var/lib、/usr/lib等关键目录。受 compat 影响:
- compat=9 → 路径会自动映射到
debian/tmp下; - compat>9 → 部分路径会被解析为宿主机绝对路径,容易导致冲突。
- compat=9 → 路径会自动映射到
注意
推荐固定使用 compat=9,避免高版本 debhelper 误将 /etc 等目录映射到宿主机系统路径,从而破坏宿主环境。
# 3. 示例内容
以 Redis 为例,redis.dirs 文件的内容如下:
/etc/redis
/var/lib/redis
/usr/bin
/usr/lib/redis
/usr/share/doc/redis
1
2
3
4
5
2
3
4
5
我们在实践中还引入了 占位符替换机制,由构建工具在编译时解析成实际路径。 这样做的好处是:在 bigtop 版本升级时无需手动修改,大幅减少维护成本。

# 4. 生成结果
完成配置后,最终生成的 deb 包示例如下:
redis_7.4.0-1_amd64.deb
1
命名规则拆解:
| 字段 | 含义 |
|---|---|
| redis | 来自 control 的 Package 名称 |
| 7.4.0 | 组件版本号 |
| -1 | release 版本号 |
| amd64 | 架构 |
- 01
- Ambari开启Kerberos认证加密类型错误 Kylin V1011-05
- 02
- KERBEROS SERVICE CHECK 报错11-04