解决-devscripts依赖缺失
# Ubuntu deb 构建环境缺失 debuild 的日志定位与修复流程
提示
本文基于真实环境还原,演示如何通过构建日志、经验推理以及 shell 验证,快速定位 debuild 缺失导致的 deb 打包失败问题。 不聚焦于具体组件,只讲通用自动化环境下的依赖排查思路与操作方法。
# 1. 日志现象分析
实际执行 deb 包自动化构建流程(如 gradle/maven/shell 调用 debuild)时,如果环境缺包,日志一般会出现类似片段:
Waiting until process started: command 'debuild'.
Changing state to: FAILED
Process 'command 'debuild'' finished with exit value -1 (state: FAILED)
...
A problem occurred starting process 'command 'debuild''
...
Execution failed for task ':bigtop-utils-deb'.
> A problem occurred starting process 'command 'debuild''
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
完整的日志
.6.4/bin/gradle}
00:48:00.490 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: STARTING
00:48:00.490 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Waiting until process started: command 'debuild'.
00:48:00.504 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Changing state to: FAILED
00:48:00.505 [DEBUG] [org.gradle.process.internal.DefaultExecHandle] Process 'command 'debuild'' finished with exit value -1 (state: FAILED)
00:48:00.505 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Execute doLast {} action for :
bigtop-utils-deb'
00:48:00.505 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Execute doLast {} action for :bigtop-util
s-deb' completed
00:48:00.505 [DEBUG] [org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter] Removed task artifact state for {} from contex
t.
00:48:00.505 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Task :bigtop-utils-deb'
00:48:00.505 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Task :bigtop-utils-deb' completed
00:48:00.505 [INFO] [org.gradle.execution.plan.DefaultPlanExecutor] :bigtop-utils-deb (Thread[Execution worker for ':',5,main]) completed. Too
k 0.101 secs.
00:48:00.505 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker for ':': released lock on :
00:48:00.505 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1.6 completed (1 worker(s) in use)
00:48:00.505 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Execution worker for ':': released lock on root.1.6
00:48:00.505 [DEBUG] [org.gradle.execution.plan.DefaultPlanExecutor] Execution worker [Thread[Execution worker for ':',5,main]] finished, busy
: 1.809 secs, idle: 0.005 secs
00:48:00.505 [DEBUG] [org.gradle.execution.plan.DefaultPlanExecutor] Execution worker [Thread[Daemon worker Thread 2,5,main]] finished, busy:
0.0 secs, idle: 1.813 secs
00:48:00.505 [DEBUG] [org.gradle.execution.plan.DefaultPlanExecutor] Execution worker [Thread[Execution worker for ':' Thread 2,5,main]] finis
hed, busy: 0.0 secs, idle: 1.813 secs
00:48:00.505 [DEBUG] [org.gradle.execution.plan.DefaultPlanExecutor] Execution worker [Thread[Execution worker for ':' Thread 3,5,main]] finis
hed, busy: 0.0 secs, idle: 1.811 secs
00:48:00.505 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskExecutionGraph] Timing: Executing the DAG took 1.815 secs
00:48:00.506 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Run tasks'
00:48:00.506 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Run tasks' completed
00:48:00.507 [DEBUG] [org.gradle.internal.work.DefaultWorkerLeaseService] Worker lease root.1 completed (0 worker(s) in use)
00:48:00.507 [DEBUG] [org.gradle.internal.resources.AbstractTrackedResourceLock] Daemon worker Thread 2: released lock on root.1
00:48:00.507 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
00:48:00.507 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] FAILURE: Build failed with an exception.
00:48:00.507 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * What went wrong:
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Execution failed for task ':bigtop-utils-deb'.
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > A problem occurred starting process 'command 'debuild''
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Try:
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] Run with --stacktrace option to get the stack trace. Run with -
-scan to get full insights.
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] * Get more help at https://help.gradle.org
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger]
00:48:00.508 [ERROR] [org.gradle.internal.buildevents.BuildResultLogger] BUILD FAILED in 2s
00:48:00.508 [LIFECYCLE] [org.gradle.internal.buildevents.TaskExecutionStatisticsReporter] 5 actionable tasks: 5 executed
00:48:00.508 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Completing Build operation 'Run build'
00:48:00.508 [DEBUG] [org.gradle.internal.operations.DefaultBuildOperationExecutor] Build operation 'Run build' completed
00:48:00.512 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for Build Output Cleanup Cache (/opt/
modules/bigtop/.gradle/buildOutputCleanup)
00:48:00.512 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on Build Output Cleanup Cache (/opt/modules/bigtop/.gra
dle/buildOutputCleanup).
00:48:00.513 [DEBUG] [org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess] Releasing file lock for execution history cache (/opt/mod
ules/bigtop/.gradle/5.6.4/executionHistory)
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
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
# 2. 日志推理思路
- 这类日志并没有明确说“command not found”或“缺某某包”,而是进程一启动就失败(exit value -1),且不是参数/脚本问题。
- 工程经验判断:自动化工具启动外部命令立即失败,极大概率就是命令本地未安装。
- JVM/Gradle/Maven/CI 等工具集成场景下,这种 exit -1、启动失败就是命令不可用(未安装/未入 PATH)。
# 3. shell 终端进一步验证
此时,推荐直接在 shell 执行:
debuild --version
1
如果看到如下内容:
Command 'debuild' not found, but can be installed with:
sudo apt install devscripts
1
2
2
则可以100%确定你的 Ubuntu 缺少 devscripts 包(debuild 由 devscripts 提供)。
也可以用 which debuild
,如无输出同理。
# 4. 一键修复方法
直接用 apt 装好 devscripts:
sudo apt-get update
sudo apt-get install devscripts
1
2
2
安装完成后,再次执行你的构建流程,debuild 就能被正常调用。
工程师总结
- 类似日志通常无法100%直接判定缺哪个包,但只要是“外部命令一启动就失败”,第一步应怀疑系统命令本地是否存在。
- shell 下手动验证,是环境排障最可靠的“闭环”。
- devscripts 是所有 deb 自动化环境必备依赖,建议所有 Ubuntu/Debian 开发环境/CI 基础镜像/自动化脚本中都提前补齐。
- 01
- bigtop-select 打包缺 compat 报错修复 deb07-16
- 02
- bigtop-select 打包缺 control 文件报错修复 deb07-16
- 03
- 首次编译-环境初始化 必装07-16