bigtop-select 打包缺 compat 报错修复deb
提示
Ubuntu 下首次用 gradle 编译 bigtop-select 生成 deb 包时,如遇 dh clean 报错“Please specify the compatibility level”,可参考本篇排查与修复。
# 1. 编译命令与出错场景
实际操作中,执行如下 gradle 命令进行 bigtop-select deb 打包:
gradle bigtop-select-pkg \
-PparentDir=/usr/bigtop \
-Dbuildwithdeps=true \
-PpkgSuffix
1
2
3
4
2
3
4
此时控制台会出现如下界面,从图中可以看到任务正常触发,但后续阶段会中断:
# 2. 报错日志复现
继续观察输出,关键错误日志如下:
18 actionable tasks: 18 executed
root@ubuntu22:/opt/modules/bigtop# gradle bigtop-select-pkg \
> -PparentDir=/usr/bigtop \
> -Dbuildwithdeps=true \
> -PpkgSuffix
> Task :bigtop-select-sdeb FAILED
dpkg-buildpackage: info: source package bigtop-select
dpkg-buildpackage: info: source version 3.2.0-1
dpkg-buildpackage: info: source distribution stable
dpkg-buildpackage: info: source changed by Bigtop <dev@bigtop.apache.org>
dpkg-buildpackage: warning: debian/rules is not executable; fixing that
dpkg-source --before-build .
debian/rules clean
dh clean
dh: error: Please specify the compatibility level in debian/compat or via Build-Depends: debhelper-compat (= X)
make: *** [debian/rules:26: clean] Error 25
dpkg-buildpackage: error: debian/rules clean subprocess returned exit status 2
FAILURE: Build failed with an exception.
* Where:
Script '/opt/modules/bigtop/packages.gradle' line: 472
* What went wrong:
Execution failed for task ':bigtop-select-sdeb'.
> Process 'command 'dpkg-buildpackage'' finished with non-zero exit value 2
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
4 actionable tasks: 4 executed
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
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
明确指出“compat level 未指定”问题,流程被中断:
# 3. 问题分析
- dh(debhelper)要求明确兼容级别,否则拒绝继续执行。
- 日志和图片共同表明,当前 debian 目录下缺少 compat 文件,或 control 文件没配
debhelper-compat
字段,导致 clean 阶段直接失败。
# 4. 修复步骤
进入 bigtop-select 的 debian 目录,新增 compat 文件即可:
echo "9" > debian/compat
1
下图演示了 compat 文件被创建的操作界面。注意数字推荐与当前 debhelper 版本保持一致(如 Ubuntu 22.04 推荐 11 或 12)。
# 5. 重新编译验证
compat 文件修复后,重新执行 gradle 命令,打包流程可以正常通过: